精华内容
下载资源
问答
  • 智能卡的产生随机数

    2020-11-14 14:55:56
    有许多不同的方法用软件来产生随机数。然而,由于智能卡存储器的容量很有限而执行计算的时间又要尽可能地短,可选择的数量就严重受限了。在实践中,惟一被使用的方法是使用操作系统已有的功能,且只需要极少的额外...
  • 产生随机数并排序

    2019-04-25 17:12:10
    c++随机产生数字,并用冒泡排序法将这些数排序,由于是在学校写的,所以借鉴了一点
  • ADC产生随机数

    2015-05-18 11:43:39
    利用STM32的ADC的一个悬空输入引脚来产生随机数
  • 本篇文章是对C++中产生随机数的实现代码进行了详细的分析介绍,需要的朋友参考下
  • MFC实现产生随机数

    2016-04-18 22:18:37
    VC++软件中的小程序,用于产生随机数,在点击后能够产生随机的整数
  • CC2530芯片的随机数生成,这是利用RF处于接收模式时产生的随机位来作随机数发生器的种子
  • matlab产生随机数的几种方法整理。内容较全面,包含产生几何分布,二项分布,正态分布等随机数
  • 在Java中产生随机数的两个方法  在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,本文主要讲述在Java中产生随机数的两个方法,更多Java...
  • 1、使用RC4算法产生随机数: 原理:RC4算法的原理很简单,包括初始化算法和伪随机子密码生成算法两大部分。在初始化的过程中,密钥的主要功能是将S-box搅乱,i确保S-box的每个元素都得到处理,j保证S-box的搅乱是...
  • C语言中产生随机数

    2012-08-18 13:50:04
    C语言中产生随机数的方法 ……rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,...
  • C 语言产生随机数的方法

    千次阅读 2021-05-25 03:05:47
    C 语言产生随机数的方法随机数的使用,是不少在学C语言过程中进行一些小功能开发的同学的一个技术问题,下面小编给大家介绍C 语言产生随机数的方法,欢迎阅读!C 语言产生随机数的方法在 C 语言中, rand() 函数可以...

    C 语言产生随机数的方法

    随机数的使用,是不少在学C语言过程中进行一些小功能开发的同学的一个技术问题,下面小编给大家介绍C 语言产生随机数的方法,欢迎阅读!

    C 语言产生随机数的方法

    在 C 语言中, rand() 函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C 提供了 srand() 函数,它的原形是 void srand( int a)。

    可能大家都知道 C 语言中的随机函数 random,可是 random 函数并不是 ANSI C 标准,所以说,random 函数不能在 gcc,vc 等编译器下编译通过。

    rand() 会返回一随机数值,范围在 0 至 RAND_MAX 间。返回 0 至 RAND_MAX 之间的随机数值,RAND_MAX 定义在 stdlib.h,(其值至少为 32767) 我运算的结果是一个不定的数,要看你定义的变量类型,int 整形的话就是 32767。 在调用此函数产生随机数前,必须先利用 srand() 设好随机数种子,如果未设随机数种子,rand() 在调用时会自动设随机数种子为 1。一般用 for 语句来设置种子的个数。具体见下面的例子。

    一 如何产生不可预见的随机序列呢

    利用 srand((unsigned int)(time(NULL)) 是一种方法,因为每一次运行程序的时间是不同的。

    在 C 语言里所提供的随机数发生器的用法:现在的 C 编译器都提供了一个基于 ANSI 标准的'伪随机数发生器函数,用来生成随机数。它们就是 rand() 和 srand() 函数。这二个函数的工作过程如下:

    1) 首先给 srand() 提供一个种子,它是一个 unsigned int 类型,其取值范围从 0~65535;

    2) 然后调用 rand(),它会根据提供给 srand() 的种子值返回一个随机数 (在 0 到 32767 之间)

    3) 根据需要多次调用 rand(),从而不间断地得到新的随机数;

    4) 无论什么时候,都可以给 srand() 提供一个新的种子,从而进一步 “随机化”rand() 的输出结果。

    下面是 0~32767 之间的随机数程序:

    #include

    #include

    #include//使用当前时钟做种子

    void main(void)

    {int i;

    srand((unsigned)time( NULL ) ); // 初始化随机数

    for(i = 0; i < 10;i++) // 打印出 10 个随机数

    printf("%d ", rand() );

    }

    根据上面的程序可以很容易得到 0~1 之间的随机数:

    #include

    #include

    #include

    int main( )

    {int i;

    srand((unsigned)time( NULL ) );

    for(i = 0; i < 10;i++)

    printf("%5.2f ", rand()/32767.0);

    }

    而产生 1~100 之间的随机数可以这样写:

    #include

    #include

    #include

    int main( )

    {

    int i;

    srand((unsigned)time( NULL ) );

    for(i = 0; i < 10;i++)

    printf("%d ", rand()%100+1);

    }

    come from http://hi.baidu.com/akaneyu

    二 三个通用的随机数发生器,推荐用第三个

    函数名: rand

    功 能: 随机数发生器

    用 法: void rand(void);

    程序例:

    #include

    #include

    int main(void)

    {

    int i;

    printf("Ten random numbers from 0 to 99 ");

    for(i=0; i<10; i++)

    printf("%d ", rand() % 100);

    return 0;

    }

    函数名: random

    功 能: 随机数发生器

    用 法: int random(int num);

    程序例:

    #include

    #include

    #include

    /* prints a random number in the range 0 to 99 */

    int main(void)

    {

    randomize();

    printf("Random number in the 0-99 range: %d ", random (100));

    return 0;

    }

    函数名: randomize 这个比较好!

    功 能: 初始化随机数发生器

    用 法: void randomize(void);

    程序例:

    #include

    #include

    #include

    int main(void)

    {

    int i;

    randomize();

    printf("Ten random numbers from 0 to 99 ");

    for(i=0; i<10; i++)

    printf("%d ", rand() % 100);

    return 0;

    }

    在《计算机常用算法》中有介绍随机数的生成算法

    三 如何产生设定范围内的随机数

    由于 rand 产生的随机数从 0 到 rand_max,而 rand_max 是一个很大的数,那么如何产生从 X~Y 的数呢?

    从 X 到 Y,有 Y-X+1 个数,所以要产生从 X 到 Y 的数,只需要这样写:

    k=rand()%(Y-X+1)+X;

    这样,就可以产生你想要的任何范围内的随机数了。

    四 产生不重复的随机数

    1)

    #include

    #include

    #include

    swap(int *pm,int *pn) /* 必须用指针进行交换 */

    {

    int temp;

    temp=*pm;

    *pm=*pn;

    *pn=temp;

    }

    int main(void)

    {

    int i,a[513];

    /*int *pa,*pb;*/

    srand((unsigned)time( NULL ) ); /* 定义这个可以产生不同的随机数 */

    for(i=1; i<=512; i++){a[i]=i;printf("%4d",a[i]);}

    for(i=512; i>=1; i--)

    {

    /* pa=&a[i]; pb=&a[rand()%i+1];*/

    swap(&a[i], &a[rand()%i+1]); /* 加一是从一到 i 的随机,就不会包含 0*/

    /* 不用再定义指针,这样结论是一样的 */

    }

    printf(" ") ;

    for(i=1; i<=64; i++)

    printf("%4d",a[i] );

    getch(); /*wintc 的输出 */

    }

    2)

    #include

    #include

    #include

    int main(void)

    {

    int a[100]={0}; int i,m;

    for(i=1; i<=99; ++i)

    printf("%4d",a[i] );

    srand((unsigned)time( NULL ) );

    for(i=1; i<=99; i++)

    {

    while(a[m=rand()%100+1]);

    a[m] = i;

    }

    for(i=1; i<=99; ++i)

    printf("%4d",a[i] );

    getch();

    }

    【C 语言产生随机数的方法】相关文章:

    展开全文
  • 产生随机数

    2011-10-19 11:32:54
    这是C#编写的产生一组不重复的随机数 在某些系统开发上经常遇到
  • 怎么在计算器上产生随机数的具体步骤利用计算器产生1-25之间的随机数按键顺序如下:(注意先要将计算器的数位调整到整数位) “ON”——“MODE”“MODE”“MODE”“1” ——“0” ——“SHIFT”——“. ”——(24)——...

    怎么在计算器上产生随机数的具体步骤以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

    5c59f2025bb24ed1d8eeb905ca7b4038.png

    怎么在计算器上产生随机数的具体步骤

    利用计算器产生1-25之间的随机数按键顺序如下:(注意先要将计算器的数位调整到整数位) “ON”——“MODE”“MODE”“MODE”“1” ——“0” ——“SHIFT”——“. ”——(24)——“+”——“1”——“=”。

    要输出很多随机数,只要重复按“=”即可。

    找出0-12之间的随机数按键顺序如下(注意先要将计算器的数位调整到整数位) :

    “ON”——“MODE”“MODE”“MODE”“1” ——“0” ——“SHIFT”——“. ”——(12)——“=”。

    因此需要大家自己变通为:“ON”——“MODE”“MODE”“MODE”“1” ——“0” ——“SHIFT”——“. ”——(11)——“+”——“1”——“=”,或者就用这0——11的12个数代替也是一样。

    同样,利用计算器产生1-365之间的随机数的按键顺序是: “ON”——“MODE”“MODE”“MODE”“1” ——“0” ——“SHIFT”——“. ”——(365)——“+”——“1”——“=”。

    同样,利用计算器产生1-365之间的随机同样,利用计算器产生1-365之间的随机数的按键顺序是: “ON”——“MODE”“MODE”“MODE”“1” ——“0” ——“SHIFT”——“. ”——(364)——“+”——“1”——“=”。

    怎样用计算器产生随机数的大体步骤

    1、按“Mode”键3次,然后按'1"键(即选择Fix);

    2、按“0”键,再按你要取的随机数的最大值;

    3、按“Shift”键,再按“Rnd#”,再按“+”键,再按0.5;

    4、按“=”键就能出来你所求的随机数。

    说明:第2步中的0代表的意思是取整数,如果要精确到小数点后一位则将0改为1,精确到二位则将0改为2.以此类推。

    结束:Mode-Mode-Mode-3-1即可恢复原来状态

    科学计算器 Casio fx-991ES PLUS 获得随机数的具体步骤?

    shift 小数点 是获取在0~Ran#后面的数 的功能

    如:shift 小数点 左括号 100等于

    是获取0~100中间的随机数...包括小数

    alpha 小数点 是获取后面的数值中间的随机数

    如 alpha 小数点 10 {shift 右括号}(输入逗号) 100 等于 ( 输入栏应是这样:Ranint(10,100) )

    是获取10~100之间的整数

    以上

    其实卡西欧的随机数都是伪随机罢了 你可以试试在shift 9 3之后输入Ran#结果一定是0.499

    怎样用计算器产生随机数的大体步骤。我的计算器是casio FX-95ES

    看有没有《shift+RND》(或《shift+RND#》)键,通常在《1》或《。》键位上。若有,直接操作 shift ,(因计算器不同而不同,有标 2nd 或 INV 的)RND# 即可,可以连按连出,也可以后连按“=”键连出。

    卡西欧计算器fx-4500PA怎样求随机数?要具体步骤,谢了

    依次按这三个键[SHIFT] [RAN#] [EXE],就会产生一个0到0.999的随机数,

    如果要产生a到b之间的随机数,则将之前产生的随机数乘以(b-a)+a,例如之前产生的随机数是0.729,而你想生成30-70之间的随机数,那么:

    0.729x(70-30)+30=0.729x40+30=29.16+30=59.16,如要整数,则将结果取整。

    计算器如何产生随机数?

    一般计算机的随机数都是伪随机数,以一个真随机数(种子)作为初始条件,然后用一定的演算法不停迭代产生随机数,下面介绍两种方法:

    一般种子可以以当前的系统时间,这是完全随机的

    演算法1:平方取中法。

    1)将种子设为X0,并mod 10000得到4位数

    2)将它平方得到一个8位数(不足8位时前面补0)

    3)取中间的4位数可得到下一个4位随机数X1

    4)重复1-3步,即可产生多个随机数

    这个演算法的一个主要缺点是最终它会退化成0,不能继续产生随机数。

    演算法2:线性同余法

    1)将种子设为X0,

    2)用一个演算法X(n+1)=(a*X(n)+b) mod c产生X(n+1)

    一般将c取得很大,可产生0到c-1之间的伪随机数

    该演算法的一个缺点是会出现回圈。

    怎么用计算器产生随机数?

    闭上眼睛,随便按,然后睁开眼睛。 ok,随机数产生了。 检视原帖>>

    分页:123

    展开全文
  • 乘同余法产生随机数

    2013-07-02 10:29:35
    系统辨识中利用乘同余法产生服从0,1分布的随机数
  • 详细介绍了matlab中使用rand函数产生随机数的方法
  • 一般单片机上电时产生的随机数都是一样的,除非用时间或者悬空的ADC引脚作为随机种子,但是这种方法都比较复杂。...用这个数字作为随机种子产生随机数。这样单片机每次上电时就可以产生不同的随机值。
  • 利用计算器产生1-25之间的随机数按键顺序如“ON”——“MODE”“MODE”“MODE”“1”——“0”——“SHIFT”——“.”——(24)——“+”——“1”——“=”。要输出很多随机数,只要重复按“=”;找出0-12之间的...

    利用计算器产生1-25之间的随机数按键顺序如“ON”——“MODE”“MODE”“MODE”“1”——“0”——“SHIFT”——“.”——(24)——“+”——“1”——“=”。要输出很多随机数,只要重复按“=”;找出0-12之间的随机数按键顺序如下:“ON”——“MODE”“MODE”“MODE”“1”——“0”——“SHIFT”——“.”——(12)——“=”;因此需要大家自己变通为:“ON”——“MODE”“MODE”“MODE”“1”——“0”——“SHIFT”——“.”——(11)——“+”——“1”——“=”,或者就用这0——11的12个数代替也是一样;同样,利用计算器产生1-365之间的随机数的按键顺序是:“ON”——“MODE”“MODE”“MODE”“1”——“0”——“SHIFT”——“.”——(365)——“+”——“1”——“=”;利用计算器产生1-365之间的随机同样,利用计算器产生1-365之间的随机数的按键顺序是:“ON”——“MODE”“MODE”“MODE”“1”——“0”——“SHIFT”——“.”——(364)——“+”——“1”——“=”;例如在1~35的范围产生随机数;MODEMODEMODE10;35SHIFTRan#+0.5= 这样就产生了1~35之间的一个随机数;接下来每按一次= 就会产生一个随机数;因计算器的型号不同,所以进入随机数模式的方法不同;上述的"0.5”意思是随机数精确小数点的位数.上述的是精确到个位数。

    阅读全文 >

    展开全文
  • C++产生随机数

    万次阅读 多人点赞 2019-05-23 12:19:46
    随机数 计算机的随机数都是由伪随机数,即是由小M多项式序列生成的,...我们知道rand()函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数,是根据一个数(我们可以称它为种子)为基准以某个...

    随机数

    计算机的随机数都是由伪随机数,即是由小M多项式序列生成的,其中产生每个小序列都有一个初始值,即随机种子。(注意: 小M多项式序列的周期是65535,即每次利用一个随机种子生成的随机数的周期是65535,当你取得65535个随机数后它们又重复出现了。)

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

    1.rand()

    功能:随机数发生器

    用法:int rand(void)

    所在头文件: stdlib.h

    rand()的内部实现是用线性同余法做的,它不是真的随机数,因其周期特别长,故在一定的范围里可看成是随机的。

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

    用户未设定随机数种子时,系统默认的随机数种子为1。

    rand()产生的是伪随机数字,每次执行时是相同的;若要不同,用函数srand()初始化它。

    2.srand()

    功能:初始化随机数发生器

    用法: void srand(unsigned int seed)

    所在头文件: stdlib.h

    srand()用来设置rand()产生随机数时的随机数种子。参数seed必须是个整数,如果每次seed都设相同值,rand()所产生的随机数值每次就会一样。

    3.使用当前时钟作为随机数种子

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

    4.产生随机数的用法

    1) 给srand()提供一个种子,它是一个unsigned int类型; 
    2) 调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到RAND_MAX之间); 
    3) 根据需要多次调用rand(),从而不间断地得到新的随机数; 
    4) 无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。

    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;
    }

    5.产生一定范围随机数的通用表示公式

    要取得[a,b)的随机整数,使用(rand() % (b-a))+ a; 
    要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a; 
    要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1; 
    通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。 
    要取得a到b之间的随机整数,另一种表示:a + (int)b * rand() / (RAND_MAX + 1)。 
    要取得0~1之间的浮点数,可以使用rand() / double(RAND_MAX)。

    不重复随机数

    1. 方法一

    最初的思想是每生成一个随机数,便于前面的所有随机数进行比较,如果有重复,则舍去不要,重新选取。但该方法十分费时,并且在数据量巨大的并且有一定限制的时候,会引发巨大问题。例如要生成10000个随机数,范围是0-9999,且不能重复,那么最后几个随机数有可能需要相当长的时间才能筛选出来。

    下面我们从另外一个角度来思考,假设我们已经由一个数组长度为10000的数组,里面分别存储了数据0-9999,我现在的做法是想办法让10000个数进行随机排列,便得到了这样一个随机数列,如果我只要其中的100个数,那么从前面取出100个就好。这里利用algorithm.h里面的一个函数,来进行简单处理。

    template<class RandomAccessIterator>  
        void random_shuffle(
          RandomAccessIterator _First, 
          RandomAccessIterator _Last
    );

    这个函数操作的对象是容器的迭代器,即我们需要将存储数据从数组变为容器就好了,下面代码实现一下:

    #include <algorithm>
    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    void randperm(int Num)
    {
        vector<int> temp;
        for (int i = 0; i < Num; ++i)
        {
            temp.push_back(i + 1);
        }
    
        random_shuffle(temp.begin(), temp.end());
    
        for (int i = 0; i < temp.size(); i++)
        {
            cout << temp[i] << " ";
        }
    }
    
    cout << endl;

    2. 方法二

    按顺序产生这些数,但随机产生它们的位置。例如下面产生100个100以内不重复随机数的代码:

    int a[100];
    for(i=0; i<=99; ++i) a[i]=i;
    for(i=99; i>=1; --i) swap(a[i], a[rand()%i]);

    上面这段代码只需要遍历一次就可以产生这100个不重复的随机数,它是如何做到的呢?首先第二行按顺序用0到99填满整个数组;第三行,是随机产生从0到m-2个数组下标,把这个下标的元素值跟m-1下标的元

    素值交换,一直进行到下标为1的元素。因此它只需要遍历一次就能产生全部的随机数。

    再看下面的代码,原理跟上面例子相似,但效率比上面的差点,但仍不失为一个好方法:

    int a[100]={0};
    int i, m;
    for(i=1; i<=99; ++i)
    {
            while(a[m=rand()%100]);
            a[m] = i;
    }

    这段代码也是随机产生位置,但它预先把整个数组初始化为0,然后随机产生其中一个位置,如果该元素值为0,表示这个位置还没有被使用过,就把i赋予它;否则,就重新随机产生另一个位置,直到整个数组

    被填满。这个方法,越到后面,遇到已使用过的元素的可能性越高,重复次数就越多,这是不及第一个方法的地方,但总的来说,效率还是不错的。

     

    References:

    [1]. 如何高效产生m个n范围内的不重复随机数

    [2]. C/C++中产生随机数(rand,srand用法)

    [3]. C++中随机数和不重复的随机数

    展开全文
  • 我们知道rand()函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数,是根据一个数(我们可以称它为种子)为基准以某个递推公式推算出来的一系列数,当这系列数很大的时候,就符合正态公布,从而...
  • 主要介绍了C语言中用于产生随机数的函数使用方法总结,分别介绍了rand()函数和srand()函数以及封装出的arc4random()函数,需要的朋友可以参考下
  • 混合同余法怎么产生均匀随机数。 包括算法的讲解,和改进。
  • 用c语言产生随机数的方法

    千次阅读 多人点赞 2019-07-08 21:08:47
    用c语言产生随机数的方法 在C语言中,rand()函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的...
  • C语言产生随机数的方法C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。那么C语言产生随机数的方法都有哪些呢?以下仅供参考!在 C ...
  • python中如何产生随机数

    千次阅读 2021-10-30 22:38:32
    在日常的生活工作和系统游戏等设计和制作时,经常会碰到产生随机数,用来解决问题,对此情况,向大家推几种可以产生随机数的方法。 1.首先需要导入random模块,使用import random导入。 random.random random....
  • 使用tcl脚本产生随机数
  • labview产生随机数

    千次阅读 2020-12-30 20:19:47
    b,则指示......5-12 前面板中建立量表的显示控件,然后右键创建属性节点中的滑块颜色前景色,程序框 图中用一随机数乘以 255 产生 0-255 的随机数,然后接入显示控件和属性节点。...图 5-5 程序的代码图 ...
  • c语言产生随机数的方法

    千次阅读 2020-12-09 14:48:20
    随机数种子 什么是随机数种子 电脑不是人,不能随便就凭空想象一个数字出来。所谓的随机数,不过是通过一个函数经过计算出来的数字而已。 因此,随机数不过是函数计算出来的值,而一个函数要得到这个值Y,肯定需要一...
  • vc6.0产生随机数

    2012-03-19 20:51:08
    在vc6.0环境下产生随机数,测试通过!可移植性强,绝对好用
  • java产生随机数的几种方式 java产生随机数的几种方式 java产生随机数的几种方式 java产生随机数的几种方式

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 177,944
精华内容 71,177
关键字:

产生随机数

友情链接: esp_mqtt-master.zip