c++ rand() 随机n位数,为什么出现下面的问题呢?

[复制链接]
查看11 | 回复5 | 2016-3-16 18:07:38 | 显示全部楼层 |阅读模式
首先你没错!目前计算机科学还给不出真正的随机数,我们利用计算机得到的只是用某种算法得出的”伪随机数“,C\C++中的rand( )也是如此,而且设计者为了方便程序员们调试程序,默认情况下,每次调试都生成相同的随机数列。所以才有你看到的结果。使用srand()的话,每次就可以得到不同的随机数列。具体使用及例子如下:#include void srand( unsigned seed ); 功能:设置rand()随机序列种子。对于给定的种子seed, rand()会反复产生特定的随机序列。
例子:srand( time(NULL) );
for( i = 0; i < ...
回复

使用道具 举报

千问 | 2016-3-16 18:07:38 | 显示全部楼层
出现73这个数字是因为rand()出来的就是73或者1073等等,所以%1000仍然是73。希望rand出来的是100-999的话使用100+rand()%900即可以了。...
回复

使用道具 举报

千问 | 2016-3-16 18:07:38 | 显示全部楼层
这。。。073 就是73啊07就是7啊 如果你要大于1位小于3位(也就是正好2位)是没有库函数的。。不过你可以随机个0~9作为十位 然后随机个0~9作为各位。。前面的*10+后面的就行...
回复

使用道具 举报

千问 | 2016-3-16 18:07:38 | 显示全部楼层
随机数:先srand(time(NULL));这样每次获取的随机数就会不一样了。rand()%90 + 10 就是10 - 99...
回复

使用道具 举报

千问 | 2016-3-16 18:07:38 | 显示全部楼层
楼上说得很对嘛,为什么不结贴呢?a=0;while (a==0)
a=(int) (10.0*rand() / (RAND_MAX + 1.0));a=a*10+(int) (10.0*rand() / (RAND_MAX + 1.0));...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行