精华内容
下载资源
问答
  • C++ 随机数函数

    2012-07-09 11:40:00
    介绍C++随机数函数 函数rand()是C++中的随机函数。 注意:rand()中不能加参数! 1 #include<iostream> 2 using naemspace std; 3 int main(){ 4 int x,y; 5 cout<<"随机数区间:"; 6 cin...

    介绍C++随机数函数

    函数rand()是C++中的随机函数。

    注意:rand()中不能加参数!

     1 #include<iostream>
     2 using naemspace std;
     3 int main(){
     4     int x,y;
     5     cout<<"随机数区间:";
     6     cin>>x>>y;
     7     printf("产生随机数:%d",x+1+rand()%(y-x));
     8     system("pause");
     9     return 0;
    10 }

    random1

     rand()将产生一个随机数(据说是从0到32767,所以后面的模别太大)。

    %(y-x)是对(y-x)求余。产生的是0~(y-x)-1。
    例如输入10,20将输出10~20随机数。

    你还可以加个种子:

    #include<iostream>
    #include<ctime>
    using naemspace std;
    int main(){
        int x,y;
        srand(time(0));
        cout<<"随机数区间:";
        cin>>x>>y;
        printf("产生随机数:%d",x+1+rand()%(y-x));
        system("pause");
        return 0;
    }

    random2

    转载于:https://www.cnblogs.com/TonyNeal/archive/2012/07/09/Random.html

    展开全文
  • C++随机数函数

    2018-12-08 15:57:04
    C++11新随机数函数C++11 中提供的 random 库,里面函数很多,可以根据需要使用不同的函数,比如浮点随机数,非负整数随机数。 非负整数随机数: 名称 功能 Engine e 创建一个引擎 Engine e(s) 创建...
    • C++11新随机数函数,C++11 中提供的 random 库,里面函数很多,可以根据需要使用不同的函数,比如浮点随机数,非负整数随机数。
    非负整数随机数:
    名称 功能
    Engine e 创建一个引擎
    Engine e(s) 创建一个引擎,并用 s 作为种子
    e.seed(s) 使用种子 s 充值 e 的状态。
    e.min( ), e.max( ) e 能生成的最小值和最大值。
    e.discard(u) 将 e 推进 u 步(u 的类型为 unsigned long long)。
    #include <iostream>
    #include <random>
    using namespace std;
    
    int main( ){
        default_random_engine e();
        e.seed((unsigned)time(0));
        for(int i=0; i<10; ++i)
            cout<<e()<<endl;
        return 0;
    }
    
    • C++11以前随机数函数
    1. rand()比较常用的函数,但是随机性有限制
    #include <stdlib.h> 
    #include <time.h>  
    srand((unsigned)time(NULL));  //以当前时间作为递推的基准(起始)
    for(int i = 0; i < 10;i++ )  
            cout << rand() << '\t'
    

    随机数函数rand()详解


    我们知道rand()函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数,是根据一个数(我们可以称它为种子)为基准以某个递推公式推算出来的一系列数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数。周期为RAND_MAX(2147483647),当你取得2147483647个随机数后它们又重复出现了。当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统。

    • rand()
    1. 功能:随机数发生器
    2. 用法:int rand(void)
    3. 所在头文件: stdlib.h
    4. rand()的内部实现是用线性同余法做的
    5. rand()返回一随机数值的范围在0至RAND_MAX 间。0~RAND_MAX每个数字被选中的机率是相同的。
    6. 用户未设定随机数种子时,系统默认的随机数种子为1。
    7. rand()产生的是伪随机数字,每次执行时是相同的;若要不同,用函数srand()初始化它。
    • srand()
    1. 功能:初始化随机数发生器
    2. 用法: void srand(unsigned int seed)
    3. 所在头文件: stdlib.h
    4. srand()用来设置rand()产生随机数时的随机数种子。参数seed必须是个整数,如果每次seed都设相同值,rand()所产生的随机数值每次就会一样。
    5. 使用当前时钟作为随机数种子
    6. 给srand()提供一个种子,它是一个unsigned int类型;

    rand()产生的随机数在每次运行的时候都是与上一次相同的。若要不同,用函数srand()初始化它。可以利用srand((unsigned int)(time(NULL))的方法,产生不同的随机数种子,因为每一次运行程序的时间是不同的。

    0~RAND_MAX之间的随机数程序

    #include <iostream> 
    #include <stdlib.h> 
    #include <time.h>  
    using namespace std;  
    int main() 
    {  
    srand((unsigned)time(NULL));  
    for(int i = 0; i < 10;i++ )  
            cout << rand() << '\t';  
    cout << endl;  
    return 0; 
    }
    
    • 产生一定范围随机数的通用表示公式
    1. 通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。
    2. 要取得0~1之间的浮点数,可以使用rand() / double(RAND_MAX)。
    展开全文
  • C/C++ 随机数函数

    2020-03-23 14:57:02
    首先,来看 一个使用内部链接的静态变量的函数:随机数函数。 ANSI C库提供了rand() 函数生成随机数。生成随机数有多种算法,ANSI C允许C实现针对特定机器 使用最佳算法。 然而,ANSI C标准还提供了一个可移植的标准...

    学习了不同存储类别的概念后,我们来看几个相关的程序。
    首先,来看 一个使用内部链接的静态变量的函数:随机数函数。
    ANSI C库提供了rand() 函数生成随机数。生成随机数有多种算法,ANSI C允许C实现针对特定机器 使用最佳算法。
    然而,ANSI C标准还提供了一个可移植的标准算法,在不 同系统中生成相同的随机数。实际上,rand()是“伪随机数生成器”,意思是 可预测生成数字的实际序列。但是,数字在其取值范围内均匀分布。

    为了看清楚程序内部的情况,我们使用可移植的ANSI版本,而不是编译器内置的rand()函数。可移植版本的方案开始于一个“种子”数字。该函数使用该种子生成新的数,这个新数又成为新的种子。然后,新种子可用于生 成更新的种子,以此类推。该方案要行之有效,随机数函数必须记录它上一 次被调用时所使用的种子。这里需要一个静态变量。

    /* rand0.c --生成随机数*/
    /* 使用 ANSI C 可移植算法 */
    static unsigned long int next = 1; /* 种子 */
    unsigned int rand0(void)
    {
    /* 生成伪随机数的魔术公式 */
    next = next * 1103515245 + 12345;
    return (unsigned int) (next / 65536) % 32768;
    }
    

    在程序清单12.7中,静态变量next的初始值是1,其值在每次调用rand0() 函数时都会被修改(通过魔术公式)。该函数是用于返回一个0~32767之间 的值。注意,next是具有内部链接的静态变量(并非无链接)。这是为了方便稍后扩展本例,供同一个文件中的其他函数共享。

    /* r_drive0.c -- 测试 rand0()函数 */
    /* 与 rand0.c 一起编译*/
    #include <stdio.h>
    extern unsigned int rand0(void);
    int main(void)
    {
    int count;
    for (count = 0; count < 5; count++)
    printf("%d\n", rand0());
    return 0;
    }
    

    该程序也需要多文件编译。程序清单 12.7 和程序清单 12.8 分别使用一 个文件。程序清单 12.8 中的extern关键字提醒读者rand0()被定义在其他文件 中,在这个文件中不要求写出该函数原型。输出如下:

    
    16838
    5758
    10113
    17515
    31051
    

    程序输出的数字看上去是随机的,再次运行程序后,输出如下:

    16838
    5758
    10113
    17515
    31051
    

    看来,这两次的输出完全相同,这体现了“伪随机”的一个方面。每次主 程序运行,都开始于相同的种子1。可以引入另一个函数srand1()重置种子来 解决这个问题。关键是要让next成为只供rand1()和srand1()访问的内部链接静态变量(srand1()相当于C库中的srand()函数)。把srand1()加入rand1()所在 的文件中。程序清单12.9给出了修改后的文件。

    /* s_and_r.c -- 包含 rand1() 和 srand1() 的文件  */
    /*       使用 ANSI C 可移植算法   */
    static unsigned long int next = 1; /* 种子 */
    int rand1(void)
    {
    /*生成伪随机数的魔术公式*/
    next = next * 1103515245 + 12345;
    return (unsigned int) (next / 65536) % 32768;
    }
    void srand1(unsigned int seed)
    {
    next = seed;
    }
    

    注意,next是具有内部链接的文件作用域静态变量。
    这意味着rand1()和 srand1()都可以使用它,但是其他文件中的函数无法访问它。使用程序清单 12.10的驱动程序测试这两个函数。
    程序清单12.10 r_drive1.c驱动程序

    /* r_drive1.c -- 测试 rand1() 和 srand1() */
    /* 与 s_and_r.c 一起编译 */
    #include <stdio.h>
    #include <stdlib.h>
    extern void srand1(unsigned int x);
    extern int rand1(void);
    897
    int main(void)
    {
    int count;
    unsigned seed;
    printf("Please enter your choice for seed.\n");
    while (scanf("%u", &seed) == 1)
    {
    srand1(seed);  /* 重置种子 */
    for (count = 0; count < 5; count++)
    printf("%d\n", rand1());
    printf("Please enter next seed (q to quit):\n");
    }
    printf("Done\n");
    return 0;
    }
    

    编译两个文件,运行该程序后,其输出如下:

    1
    16838
    5758
    898
    10113
    17515
    31051
    
    Please enter next seed (q to quit):
    513
    20067
    23475
    8955
    20841
    15324
    Please enter next seed (q to quit):
    q
    Done
    

    设置seed的值为1,输出的结果与前面程序相同。但是设置seed的值为 513后就得到了新的结果。
    注意 自动重置种子
    如果 C 实现允许访问一些可变的量(如,时钟系统),可以用这些值 (可能会被截断)初始化种子值。例如,ANSI C有一个time()函数返回系统 时间。虽然时间单元因系统而异,但是重点是该返回值是一个可进行运算的 类型,而且其值随着时间变化而变化。time()返回值的类型名是time_t,具体 类型与系统有关。这没关系,我们可以使用强制类型转换:

    #include <time.h> /* 提供time()的ANSI原型*/
    srand1((unsigned int) time(0)); /* 初始化种子 */
    

    一般而言,time()接受的参数是一个 time_t 类型对象的地址,而时间值 就储存在传入的地址上。当然,也可以传入空指针(0)作为参数,这种情 况下,只能通过返回值机制来提供值。
    可以把这个技巧应用于标准的ANSI C函数srand()和rand()中。如果使用 这些函数,要在文件中包含stdlib.c头文件。实际上,既然已经明白了 srand1()和rand1()如何使用内部链接的静态变量,你也可以使用编译器提供 的版本。我们将在下一个示例中这样做。

    展开全文
  • c++随机数函数rand()

    2021-03-08 19:54:45
    c语言中rand()函数生成随机数的用法: 详细介绍: (1)使用该函数首先应在开头包含头文件stdlib.h #include<stdlib.h>(C++建议使用#include,下同) (2)在标准的C库中函数rand()可以生成0~RAND_MAX之间的一个...

    c 语言rand()生成随机数

    c语言中rand()函数生成随机数的用法:

    详细介绍:

    (1)使用该函数首先应在开头包含头文件stdlib.h
    #include<stdlib.h>(C++建议使用#include,下同)
    (2)在标准的C库中函数rand()可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,它与系统有关。
    (3)rand()函数没有输入参数,直接通过表达式rand()来引用;例如可以用下面的语句来打印两个随机数:
    printf(“Random numbers are: %i %i\n”,rand(),rand());
    (4)因为rand()函数是按指定的顺序来产生整数,因此每次执行上面的语句都打印相同的两个值,所以说C语言的随机并不是真正意义上的随机,有时候也叫伪随机数。
    (5)为了使程序在每次执行时都能生成一个新序列的随机值,我们通常通过伪随机数生成器提供一粒新的随机种子。函数 srand()(来自stdlib.h)可以为随机数生成器播散种子。只要种子不同rand()函数就会产生不同的随机数序列。srand()称为随机数生成器的初始化器.

    1.每次都会产生相同的数字

    int main(void) {
        int i;
        for (i = 0; i < 10; i++)
        	printf("%d", rand()%100+1);
        return 0;
    }
    

    在这里插入图片描述

    2.每次产生不同的数字,注意:srand()函数添加一次就够了,如果放到了for循环中产生的数字会是相同的

    int main(void) {
        int i;
        srand(time(NULL)); /*根据当前时间设置“随机数种子”*/
        for (i = 0; i < 10; i++) 
        	printf("%d", rand()%100+1);
        return 0;
    }
    

    在这里插入图片描述

    展开全文
  • C++ 随机数函数的使用

    2018-09-19 13:33:07
    随机数 计算机的随机数都是由伪随机数,即是由小M多项式序列生成的...我们知道rand()函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数,是根据一个数(我们可以称它为种子)为基准以某个递推...
  • C++随机数函数复习

    2012-09-26 15:32:54
    随机数相关的函数 函数一:int rand(void); 从srand (seed)中指定的seed开始,返回一个[seed, RAND_MAX(0x7fff))间的随机整数。 函数二:void srand(unsigned seed); 参数seed是rand()的...
  • C++ 随机数函数rand()与srand()的思考

    千次阅读 2019-11-09 12:45:26
    随机数函数的实质是: 每次调用rand()前,(第一次调用rand())系统通过随机数种子生成一个随机数队列。每次调用rand()时,直接从该随机队列里依次获取下一随机数。 随机数种子对于随机数序列至关重要。随机数种子...
  • C/C++随机数函数

    2014-01-06 19:12:08
    计算机的随机数都是由伪随机数,即是由小M多项式序列生成的,其中...我们知道rand()函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数,是根据一个数(我们可以称它为种子)为基准以某个递推公
  • c\c++ 随机数函数

    2013-04-15 14:23:00
    (1) rand()函数:原型: int rand(void)功能: 产生从[0,RAND_MAX]之间的随机数,RAND_MAX为系统定义的宏, 32位机器上大小为32767。头文件: stdlib.h或者iostream (2)srand()函数:原型: void srand(unsigned seed)...
  • c++随机数产生函数

    2011-06-30 19:43:58
    c++随机数产生函数 可以实现 rand(产生随机数)
  • 主要为大家详细介绍了C/C++产生随机数函数的实现方法,如何使用C/C++产生随机数函数,感兴趣的小伙伴们可以参考一下
  • C++ 随机数

    万次阅读 多人点赞 2018-10-07 19:20:19
    c++随机数产生以及扩展

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,109
精华内容 12,443
关键字:

c++随机数函数

c++ 订阅