C++产生随机数
2016-02-28 13:53
435 查看
说明
//在这里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); } //主要是生成随机数。可是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; }
相关文章推荐
- C++面试题
- C语言 结构体作为函数的参数
- c语言:求三个数中的最大值(双分支结构)
- C语言(函数与宏)
- Eclipse下搭建C/C++开发环境教程
- How computer work?
- 最新首发Eclipse+CDT+android-ndk写纯c++安卓应用(附openGL Es)
- C语言实现双向非循环链表(不带头结点)的清空
- C/C++中define定义的常量与const常量
- 《你必须知道的495个C语言问题》知识笔记及补充
- C/C++中define定义的常量与const常量
- POJ 2362
- VS2010 C++ 操作Excel表格的编程实现
- C++中将数组作为形参时防止访问越界的几种方法
- C语言 单链表的 反序输出 与 反转
- effective c++读书笔记1,导读
- C++程序设计课程主页-2015级
- C++中的RVO和NRVO
- c++ gui qt4 chap02 find
- C/C++——声明一个到字符的指针,包含10个整数的数组,到包含10个整数的数组的引用,到字符串的数组的指针,到字符的指针的指针...