注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 利用手机和电池实现反地心..
 帮助

彩票生成器


2008-02-18 14:13:28
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://qq164587043.blog.51cto.com/261469/62353
昨天第一次去买彩票,七乐彩30选7,在选号码时费了些时间,就打算写个彩票号码生成工具。
刚刚写好的,代码如下:
 
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
 
/*从1~30个数中选择7个数*/
#define MIN 1            
#define MAX 30
#define NUM 7                    
 
int main()
{
 int j = 0, k = 0, range = 0;
 range = MAX - MIN;
 srand((int)time(0));              //产生随机数种子
 while(k<NUM)
 {
  j = MIN + (int)(range * rand() / RAND_MAX);
  printf("%d ",j);
  k++;
 }
 printf("\n");
 return 0;
}
 
顺便讲解下:
核心代码 j = MIN + (int)(range * rand() / RAND_MAX);可以分成4步骤,从里到外依次是:
(1)j = rand();           //得到一个0到RAND_MAX(32767)之间的数
(2)j /= RAND_MAX;         //除以RAND_MAX产生一个0 - 1之间的教主
(3)j = (int)(range * j);           //把校正值乘以所需要的范围值range,得到(MIN-1)~(MAX-1)即0~29之间的数
(4)j+=MIN;    //把該值和要求最小值相加,使得到的值最终是在MIN~MAX即1~30范围内的

本文出自 “国产0与1” 博客,请务必保留此出处http://qq164587043.blog.51cto.com/261469/62353





    文章评论
 
2008-02-19 13:05:30
我用这个脚本执行结果都是7个1

2008-02-20 13:59:44
楼上的我不知道你是怎么测试的
我刚才也试了几次,得到的结果分别是:
18 24 16 15 21 12 3
请按任意键继续. . .

19 3 27 18 15 27 2
请按任意键继续. . .

20 10 13 11 24 5 12
请按任意键继续. . .



 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: