关于随机数的一个问题!
我想从1到10000之间随机取一个数。用了下面的语句
srand((unsigned)time(NULL));
randnum=rand()%10000+1;
但我发现随机是随机了,但是怎么每次取到的数都是递增的?
而且间隔时间短,取到的数和上次取到的数间隔也小。这是不是和
SRAND取的随机种子有关?
那如何可以做到真正的随机呢?就是完全没有规律的。
问题点数:20、回复次数:11Top
1 楼grrrrrr(Grrrr)回复于 2004-08-01 22:20:58 得分 0
你要为难计算机啊...Top
2 楼grrrrrr(Grrrr)回复于 2004-08-01 22:24:46 得分 0
不可能出现真正的随机数
Knuth有个算法经过10多步运算,而且是极其复杂的运算,得出一个随机数,也只能说非常接近随机Top
3 楼kingfox(小狐仙)回复于 2004-08-01 22:28:24 得分 5
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
srand((unsigned)time(NULL));
int randnum=rand()%10000+1;
printf( "%d\n", randnum );
return 0;
}
随机的,没发现跟时间的规律。用gcc编译的。Top
4 楼ma100()回复于 2004-08-01 22:29:07 得分 0
每次rand前都srand了吗Top
5 楼yaozheng(Hannibal)回复于 2004-08-01 22:29:55 得分 0
不是阿!!我的要求不高啊,只要不是像我那样递增就行!
我用这个代码一开始4700,然后再运行472x,再来一次475x,过一会儿再来一次482x。
能不能就是间隔大一些,只要不要这样递增就行!!
Top
6 楼xenix(早死三年何愁睡)回复于 2004-08-01 22:57:27 得分 2
只需srand 一次
Top
7 楼xbitor(三哥)回复于 2004-08-02 00:20:57 得分 2
randomize(); //随机数初始化
rand()%1000+1;//产生1000以内的随机数Top
8 楼chunhai12(小海)回复于 2004-08-02 09:25:10 得分 5
#include <ctime>
int main()
{
srand(time(NULL));//使用系统时间初试化随机种子。
int i = rand() % 10;//产生0~9之间的随机数。
return 0;
}Top
9 楼Trojan_lj(溺水的鱼)回复于 2004-08-02 10:27:51 得分 2
你说的是DOS下的问题还是WINDOWS下的问题,要是WINDOWS下的问题我一直是用 random(1000);/*产生从0~1000之间随机数*/ 函数的,DOS下我不知道行不行,没试过!Top
10 楼baqiao023(篮球小子)回复于 2004-08-02 13:57:20 得分 2
你的方法是对的呀!也只能做到这一步了!
实在不行的,你可以用一些算法的,不过复杂一点!Top
11 楼newegg2002(同志们,同胞们,大学的四年,是扎实基础的四年!!)回复于 2004-08-03 12:47:16 得分 2
我记得那只是伪随机函数嘛..
得到的数不会是很随机的..Top




