随机数

一、随机数

标准C库中函数rand()可以生成0~RAND_MAX之间的一个随机数
其中RAND_MAX 是stdlib.h 中定义的一个整数,它与系统有关。(RAND_MAX的值为2147483647。)
rand()产生伪随机数,srand函数提供种子,种子不同产生的随机数序列也不同
所以通常先调用srand函数 time()返回的是系统的时间(从1970.1.1午夜算起)
单位:秒,种子不同当然产生的随机数相同几率就很小了。

(1)如果需要随机生成一个在一定范围的数,可以在宏定义中定义一个random(int number)函数,然后在main()里面直接调用random()函数.

#include<stdio.h>
#include<stdlib.h>
#define random(x) (rand()%x)//宏定义
void main()
{
     for(int i=0;i<10;i++)
     {
     printf("%d/n",random(100));//随机生成10个0~100的数
     }
}
//请注意该程序每次运行的结果都是一样的.
//这与随机数种子有关,因为没有设置随机数种子,每次随机数种子都自动设成相同值1 ,进而导致rand()所产生的随机数值都一样。

(2)srand()函数(可用来设置rand()产生随机数时的随机数种子)
定义 : void srand (unsigned int seed)
通常可以利用geypid()或time(NULL)的返回值来当做seed

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define random(x) (rand()%x)
void main()
{
     srand((int)time(NULL));
     for(int x=0;x<10;x++)
     {
           printf("%d/n",random(100));
     }
}

(3)产生一定范围内的随机数的通用公式

取得[0,x)的随机整数:rand()%x;
取得[a,b)的随机整数:rand()%(b-a)+a;
取得[a,b]的随机整数:rand()%(b-a+1)+a;
取得(a,b]的随机整数:rand()%(b-a)+a+1;
取得0-1之间的浮点数:rand()/double(RAND_MAX)。
(4)C++产生随机数的示例

#include<iostream>
#include<cstdlib>
#include<ctime>//time()头文件
#define random(a,b) (rand()%(b-a+1)+a)//宏定义
using namespace std;
int main()
{
    srand((unsigned)time(NULL));
    for(int i=0;i<10;i++)
    cout<<random(1,100)<<' ';
    return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值