C++随机数产生器

在标准库中,提供了rand函数(函数原型见),用来产生0到RAND_MAX之间的整数(这是头文件中定义的符号常量)。RAND_MAX的值至少应为32767,也就是两个字节
(16位)所能表示的最大整数值。
使用: int i=rand(); rand函数产生的数值范围可能与特定应用中的数值范围不同。


例如,模拟掷硬币的程序只要0(正面)和1(反面),模拟投骰
子的程序只要1到6之间的随机整数。可以使用求模运算符(%)
和rand函数解决:
rand()%2; //产生0和1整数
rand()%6; //产生0到5之间的整数
称为比例缩放。数字2和数字6称为比例因子,然后将所产生的
数值范围加1,即可得到所要结果。


总结:
(1)由rand函数直接产生的值总是取值为:
0≤rand( )≤RAND_MAX
(2)用一个语句模拟投骰子如下:
face=1+rand( ) %6;
总是对变量face指定1≤face≤6的整数(随机)。
(3) **将(2)一般化:
n=a+rand( ) % b;
其中:a是位移值(等于所要的连续数范围的开始值),b是比
例因子(即由连续整数构成的该范围的宽度。**


#include <iostream.h>
#include <stdlib.h>
void main(){
        for(int i=1;i<=20;i++){
             cout<<(1+rand()%6)<<'\t';
             if(i%5==0)cout<<endl;
         }
}

注:系统函数int rand()的功能是产生一个伪随机数,伪随机数并不
是真正随机的。每次运行该程序时产生的序列都是相同的,所以称
为伪随机数序列。

通常希望程序每次执行时产生不同的随机数系列,可以用标准库函数srand完成(函数原型见)。 void srand(unsigned int seed);为rand函数提供随机种子(参数seed便是种子),就可以在每次执
行程序时产生不同的随机数系列。

#include <iostream>
#include <cstdlib>
using namespace std;
int main(){
    unsigned seed;
    cout<<”Enter seed:”;
    cin>>seed;
    srand(seed);
        for(int i=1;i<=10;i++){
             cout<<(1+rand()%6)<<'\t';
             if(i%5==0)cout<<endl;
         }
         return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值