<span style="font-size:14px;"><span style="font-size:14px;"></pre><pre code_snippet_id="617595" snippet_file_name="blog_20150312_2_2284349" name="code" class="cpp"> <pre name="code" class="cpp"> //在这里srand的作用很重要,srand()的作用是初始化随机数种子,种子的伪随机数计算的依据, //种子相同,计算得到的随机数也是相同的,通常函数没有用到srand()而是用rand(),则是相当于调用了srand(1), //这也解决了我上学期做最后那个记忆游戏时,每次重新运行程序时,产生的随机数都是相同的问题 //time(NULL)返回的值是自1970.1.1零点以来经过的秒数,所以每时每刻都是不同的 // #include<stdio.h> #include<time.h> //time() #include<stdlib.h> //srand()+rand() int main() { srand(time(NULL)); //产生[a,b] int m = rand() % a + b; printf("%d\n", m); }</span></span>
<span style="font-size:14px;"><span style="font-size:14px;">//主要是生成随机数,但是rand()函数生成随机数区间为[0,RAND_MAX], //RAND_MAX至少为32767(2e15-1),并且在不同条件下数值可能不同 //这里作者用了放大的方式将区间放大(代码来自刘汝佳) #include<stdio.h> #include<time.h> //time() #include<stdlib.h> //srand()+rand() int n = 100, m = 100000; //这个函数是取得[0,1]区间内的实数,之后在下一个函数中扩大(n-1)倍在取整 double random() { return (double)rand() / RAND_MAX; } int random(int m) { return (int)(random()*(m - 1) + 0.5); } int main() { srand(time(NULL)); printf("%d %d\n", n, m); for (int i = 0; i < m; i++) { if (rand() % 2 == 0) { printf("A"); } else { printf("B"); } int X, Y; for (;;) { X = random(n) + 1; Y = random(n) + 1; if (X != Y) { break; } } printf("%d %d\n", X, Y); } return 0; }</span></span>
原文地址:http://blog.csdn.net/u013298384/article/details/44218811