c语言随机数
写得我自己都看不好了:大家都比较喜欢吃快餐,只需要尽快告诉读者怎么用起来就行了。不想听啰啰嗦嗦说一堆,然后例程还特别麻烦
so:
1、基本
int seed = time(0);//#include <ctime>
srand(seed);
int myRandom = rand();
//就这三行就得到了一个 随机数,其他的 都不属于随机数的范畴,举个随机数的例子还要看数组,这说明这个 笔记做的是在不咋好。
2、然后是生成指定范围的数字:
如何生成一个随机数i,使得0<=i<20?
如何生成一个随机数i,使得 10<=i<20?
如何生成一个随机数i,使得 10<=i<=50?
int seed = time(0);
srand(seed);
int i1 = rand()%20;
int i2 = rand()%10+10;
int i3 = rand()%10+40;
3、解释原因
这个有点儿坑,每次结果都是一样的,说好的随机根本不随机。其实 随机数本身也是通过计算得到的,每一次都是通过随机数种子计算得到的。如果随机数种子不同那么计算出来的随机数就不同,而产生随机数种子的函数同样在 stdlib.h 里面,函数是:srand().
【此部分代码在function1()里面】
我们需要给随机数种子每次以不同的值,然后就能得到不同的随机数了,但是还有一个弊端。种子怎么才能得到不同的值。那我们知道时间每时每刻都不相同,所以如果能用时间给到随机数种子里面,那么每次得到的结果必然是不相同的。
得到
这个结果就比较好了。
下面源代码。
#include <iostream> #include <stdlib.h> #include <time.h> /** rand() 来自 stdlib.h 文件 */ void function1(void); void function2(void); //int[] makeArray(int array[]);//怎么返回int类型的数组? void display(int array[]); int main() { function1(); function2(); return 0; } void function2(void){ int array[10]; int randomseed = (int) time(NULL);//包含在time.h里面 //返回当前时间,是time类型需要强制类型转换成int类型。 srand(randomseed); for(int i=0;i<10;i++){ array[i]=rand(); } display(array); } void function1(void){ //我们利用 rand() 来产生随机数: int array[10]; for(int i=0;i<10;i++){ array[i]=rand(); } display(array); } void display(int array[]){ for(int i=0;i<10;i++){ printf("array[i]=%d ",array[i]); if((i+1)%5==0){ printf("\n"); } } }