关于random的问题。
我在用random 函数生成一个随机数。假如函数是:random(10) 运行后产生一个随机数。但如果不改参数,下次运行时随机数还是和上次的 一样。我想每次运行都产生不同的随机数。该怎么办?
----------------解决方案--------------------------------------------------------
设置一个随机数种子便可。 设置随机数种子的函数可使用 randomize(), 该函数的原形是 void randomize(void); 所在头文件: stdlib.h 此函数无须参数,也无返回值, 实际上,随机数种子函数实现时会调用 time()函数, 且声明了一个全局变量 Seed,每次调用随机数产生函数后 Seed 都将被更改, 以达到产生某范围内周期性的随机数的目的, Seed 便是种子,调用 randomize 实际上就是给 Seed 初始化一个值, 可以想象它的实现就是 Seed = time(); 随机数产生器可使用线性同余数方法产生, 这是最简单的方法, 且计算机无法产生真正的随机数,因为它们都是依赖算法产生的。 所以称产生的随机数为伪随机数,但已足够应用了。
[此贴子已经被作者于2005-9-18 21:53:35编辑过]
----------------解决方案--------------------------------------------------------
讲的不错
----------------解决方案--------------------------------------------------------
以下是引用ChenMo在2005-9-18 21:46:40的发言:
设置一个随机数种子便可。
设置随机数种子的函数可使用 randomize(),
该函数的原形是 void randomize(void);所在头文件: stdlib.h此函数无须参数,也无返回值,
实际上,随机数种子函数实现时会调用 time()函数,
且声明了一个全局变量 Seed,每次调用随机数产生函数后 Seed 都将被更改,
以达到产生某范围内周期性的随机数的目的,
Seed 便是种子,调用 randomize 实际上就是给 Seed 初始化一个值,
可以想象它的实现就是 Seed = time();
随机数产生器可使用线性同余数方法产生,
这是最简单的方法,
且计算机无法产生真正的随机数,因为它们都是依赖算法产生的。
所以称产生的随机数为伪随机数,但已足够应用了。
谢谢,我才初学。你讲的很细,很全,非常的负责任。
只是我不知道具体怎么引用,我查函数库看到过这个函数,但引用时总是出错。能不能举个简单的例子,引用一下。谢谢。
[此贴子已经被作者于2005-9-19 8:56:05编辑过]
----------------解决方案--------------------------------------------------------
#include <time.h>
srand(time(NULL));
然后rand()就可以了
----------------解决方案--------------------------------------------------------
谢谢~~!!!!
我看的那本C语言程序设计上很少讲到这类函数的使用。从哪里学到这些东西啊。
----------------解决方案--------------------------------------------------------
一般的教材不可能把所有的库函数都讲的【库函数太多-_-!】有一本书教什么C/C++库函数大全,讲的函数很多,可以看看,老外写的,网上有电子中文版的。不要问我下载地址,因为我也忘了哪里能下了。不必可意的记,只要知道有那么个能实现那种功能的函数就行了,等到实际用的时候再详查,用的多了,自然就记住一些了。
----------------解决方案--------------------------------------------------------
还有上面chenmo兄说的randomize函数应该怎么使用?这几个函数我都试着用过,都不会用。哪有介绍的啊?
----------------解决方案--------------------------------------------------------
以下是引用jackrain在2005-9-19 10:19:43的发言:
一般的教材不可能把所有的库函数都讲的【库函数太多-_-!】有一本书教什么C/C++库函数大全,讲的函数很多,可以看看,老外写的,网上有电子中文版的。不要问我下载地址,因为我也忘了哪里能下了。不必可意的记,只要知道有那么个能实现那种功能的函数就行了,等到实际用的时候再详查,用的多了,自然就记住一些了。
谢谢!!!! ----------------解决方案--------------------------------------------------------
给你个例子。win-tc下编译通过。 #include <stdlib.h> #include <stdio.h>
void main() { int i, j, num;
randomize(); for( i=0; i<10; i++ ) { num = random(20) + 1; for( j=0; j<num; j++ ) printf( "*" );
printf("\n"); } system("pause"); }
但是C-Free不支持
----------------解决方案--------------------------------------------------------