美文网首页
c/c++生成随机数

c/c++生成随机数

作者: DeepWeaver | 来源:发表于2017-10-07 20:49 被阅读36次

rand()

  • 生成一个0~RAND_MAX的随机数

RAND_MAX的范围最少是在32767之间(int)。用unsigned int 双字节是65535,四字节是4294967295的整数范围。0~RAND_MAX每个数字被选中的机率是相同的。

#include <iostream>
using namespace std;
int main()
{
    cout<<rand()<<endl;
    return 0;
}
运行结果:
16807
[Finished in 0.3s]

该函数原型为 int rand() , 无参数,产生一个范围在0到RAND_MAX之间的数,通过取余可以获得指定范围的随机数。
要取得0~1之间的浮点数,可以使用rand() / double(RAND_MAX)

  • 生成一个0~x的随机数

#include <iostream>
using namespace std;
int random(int x){
    return rand()%x;
}
int main()
{
    for(int i=0;i<10; i++){
        cout<<" "<<random(10);
    }
    cout<<endl;
    return 0;
}
运行结果:
 7 9 3 8 0 2 4 8 3 9
[Finished in 0.3s]
  • 生成一个m~n的随机数

#include <iostream>
using namespace std;
int random(int m, int n){
    if(m>n){
        return rand()%(m-n+1)+n;
    }
    else if(m==n){
        return m;
    }
    else{
        return rand()%(n-m+1) + m;
    }
}
int main()
{
    for(int i=0;i<10; i++){
        cout<<" "<<random(5,15);
    }
    cout<<endl;
    return 0;
}
运行结果:
 15 6 5 11 13 8 7 5 14 9
[Finished in 0.3s]

以上的代码生成的随机数范围是[m, n],通过不同的设定,随机数可以是[m, n)或是(m, n],或是(m, n)。

(a,b) (rand()%(b-a+1))+a-1
[a,b) (rand()%(b-a))+a
(a,b] (rand()%(b-a))+a+1
[a,b] (rand()%(b-a+1))+a

注意,以上三个程序每次执行产生的结果是相同的,即是个伪随机数。rand()产生随机数与具体的种子有关,当不用srand()获取种子时,种子的默认值为1,因此需要用srand()函数产生不同的种子,种子的值可以人为设定。若是为了产生不同的种子值,通常用时间作为参数值。

srand()

srand()函数原型:void srand(unsigned seed)

#include <iostream>
using namespace std;
int main()
{
    cout<<rand()<<endl;//default = 1, which is the same with below
    srand(1);
    cout<<rand()<<endl;
    srand(23);
    cout<<rand()<<endl;
    srand((int)time(NULL));
    cout<<rand()<<endl;
    cout<<rand()/double(RAND_MAX)<<endl;
    return 0;
}
运行结果:
16807
16807
386561
679799174
0.359358
[Finished in 0.3s]

相关文章

  • C++随机数

    C++ 随机数 在许多情况下,需要生成随机数。关于随机数生成器,有两个相关的函数。一个是 rand(),该函数只返...

  • c/c++生成随机数

    rand() 生成一个0~RAND_MAX的随机数 RAND_MAX的范围最少是在32767之间(int)。用un...

  • Linux shell下生成随机数

    本文只讨论在shell下生成随机数,不包括在C/C++等程序语言中的做法。 $RANDOM RANDOM是bash...

  • c++生成随机数

    一.获取均匀分布的随机数###经典方法: rand的机制是根据一个随机数种子(通常是一个整数值,如果没有设置,则为...

  • c++ 11中的随机数 ——random

    背景 C 和 C++ 都依赖一个简单的 C 库函数 rand 来生成随机数rand 函数有一些问题:即使不是大多数...

  • 生成随机数

    两个C函数 rand()函数生成的随机数是伪随机数,所谓伪随机数,指的是程序每次运行,生成的随机数都是不变的,生成...

  • c++随机数

    c++产生若干随机数 产生某一区间的随机数

  • C++生成随机数据方法

    生成随机int数组方法(数据未知) 生成随机Int序列(给定数据) 生成随机序列(给定数据)--模板函数

  • C语言如何使用随机数?

    C语言如何使用随机数? 功能介绍推送一些C语言方面的知识,提供C语言/C++语言资料,讨论和学习C语言/C++编程...

  • C++产生随机数

    今天用C++实现一个调度算法,需要生成随机数,于是我立刻想到了经典的C的实现方法: 但是在实际的工程中,可能涉及到...

网友评论

      本文标题:c/c++生成随机数

      本文链接:https://www.haomeiwen.com/subject/sgqsyxtx.html