精华内容
下载资源
问答
  • 由1-7的随机整数函数构造1-10随机整数函数

    万次阅读 热门讨论 2011-09-25 23:18:16
    题目: 已知有个rand7()的函数,返回1到7随机自然数,让利用这个rand7()构造rand10()...分析:要保证rand10()在整数1-10的均匀分布,可以构造一个1-10*n的均匀分布的随机整数区间(n为任何正整数)。假设x是这个1-10

    题目:

    已知有个rand7()的函数,返回1到7随机自然数,让利用这个rand7()构造rand10() 随机1~10。


    分析:要保证rand10()在整数1-10的均匀分布,可以构造一个1-10*n的均匀分布的随机整数区间(n为任何正整数)。假设x是这个1-10*n区间上的一个随机整数,那么x%10+1就是均匀分布在1-10区间上的整数。由于(rand7()-1)*7+rand7()可以构造出均匀分布在1-49的随机数(原因见下面的说明),可以将41~49这样的随机数剔除掉,得到的数1-40仍然是均匀分布在1-40的,这是因为每个数都可以看成一个独立事件。

    下面说明为什么(rand7()-1)*7+rand7()可以构造出均匀分布在1-49的随机数:
    首先rand7()-1得到一个离散整数集合{0,1,2,3,4,5,6},其中每个整数的出现概率都是1/7。那么(rand7()-1)*7得到一个离散整数集合A={0,7,14,21,28,35,42},其中每个整数的出现概率也都是1/7。而rand7()得到的集合B={1,2,3,4,5,6,7}中每个整数出现的概率也是1/7。显然集合A和B中任何两个元素组合可以与1-49之间的一个整数一一对应,也就是说1-49之间的任何一个数,可以唯一确定A和B中两个元素的一种组合方式,反过来也成立。由于A和B中元素可以看成是独立事件,根据独立事件的概率公式P(AB)=P(A)P(B),得到每个组合的概率是1/7*1/7=1/49。因此(rand7()-1)*7+rand7()生成的整数均匀分布在1-49之间,每个数的概率都是1/49。


    程序:

    /**
     *
     * random function derivation
     *  
     * Copyright (c) 2011 ljs (http://blog.csdn.net/ljsspace/)
     * Licensed under GPL (http://www.opensource.org/licenses/gpl-license.php)
     *
     * @author ljs
     * 2011-09-25
     *
     */

    int rand7()
    {
     int x=0;
     do{
      x=(rand7()-1)*7+rand7();
     }while(x>40);
     return x%10+1;
    }

    注:由朋友问为什么用while(x>40)而不用while(x>10)呢?原因是如果用while(x>10)则有40/49的概率需要循环while,很有可能死循环了。



    展开全文
  • 计算机通过C++中的算法从一个起始数(startingpoint)开始计算,最终得到的一个“貌似随机”的整数,即为伪随机整数。而不同的起始数得到的伪随机的整数也是不同的。 因此,在C++中产生随机数的步骤分为两步:第一...

    C++中产生的随机数实际上并不是真正的随机,而是伪随机(pseudorandom)。计算机通过C++中的算法从一个起始数(startingpoint)开始计算,最终得到的一个“貌似随机”的整数,即为伪随机整数。而不同的起始数得到的伪随机的整数也是不同的。

    因此,在C++中产生随机数的步骤分为两步:第一步是设置起始数;第二步是产生伪随机数。

    1 设置起始数

    通过srand()函数设置起始数。

    1.1 函数格式

    void srand( unsigned int seed);

    其中,seed表示设置的起始数,起始数也叫做“种子”。

    1.2 函数调用

    srand(2);

    以上代码将随机整数的种子设置为2。

    2 产生伪随机整数

    通过rand()函数产生伪随机整数。

    2.1 函数格式

    int rand(void);

    函数的返回值是产生的伪随机整数。

    2.2 函数调用

    intpseudorandom = rand();

    2.3 函数说明

    2.3.1 默认种子

    一般来说,在调用rand()函数产生伪随机整数之前,必须调用srand()函数设置种子。但是也可以直接调用rand()函数产生伪随机整数,这时相当于将种子设置成了1。也就是说

    srand(1);

    intpseudorandom = rand();

    intpseudorandom = rand();

    等价。

    2.3.2 种子与伪随机整数

    相同种子会产生相同的伪随机整数,但是,在程序中利用同一个种子多次产生伪随机整数时,则产生的伪随机整数是不同的,例如:

        int i;

        srand(1);

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

        {

           printf("%6d\n",rand());

    }

    此时,产生的是10个不同的伪随机整数,且值是递增的。但是每次运行该程序时,产生的是两组相同的伪随机整数,如图1所示。


    图1 相同的种子产生2组相同的伪随机整数

    2.3.3 变化种子

    为了避免程序每次产生相同的伪随机整数组,必须要使用变化的种子。即每次产生伪随机整数时,种子是不相同的。一般采用GetTickCount()函数来指定种子。

    GetTickCount()函数的返回值是获取系统已经启动了多长时间,以毫秒作为单位。

    srand(GetTickCount());

    每次运行该程序时,产生的是两组不相同的伪随机整数,如图2所示。


    图2 不同的种子产生2组不相同的伪随机整数

     

    3 思考题

    3.1 产生指定范围内的伪随机整数

    如何产生指定范围内的伪随机整数,例如产生1~100之内的伪随机整数。

    3.2 产生指定范围内的未随机小数

    如何产生指定范围内的伪随机小数,例如产生1~100之内的伪随机小数。

    展开全文
  • 用法 r=myrand(a,b) a 和 b 是范围,例如,如果我们想生成 370 到 55780 之间的随机整数,我们调用函数: r=myrand(370,55780) 我们还可以根据需要限制列表。 例如,如果我们只想要 370 到 55780 之间的 10 个随机...
  • js取随机整数函数

    千次阅读 2019-05-26 15:50:33
    从1开始 至 任意值 parseInt(Math.random()*上限+1); 从任意值开始 至 任意值 parseInt(Math.random()*(上限-下限+1)+下限);... //输出0~10之间的随机整数 document.write(Math.floor(Math.rando...
    1. 从1开始 至 任意值
      parseInt(Math.random()*上限+1);

    2. 从任意值开始 至 任意值
      parseInt(Math.random()*(上限-下限+1)+下限);

    举例说明

    document.write(parseInt(10*Math.random()));  //输出0~10之间的随机整数

    document.write(Math.floor(Math.random()*10+1));  //输出1~10之间的随机整数

    展开全文
  • Numpy之random.randint产生随机整数

    万次阅读 2017-11-18 16:11:55
    方法numpy.random.randint(low, high=None, size=None, dtype='l')参数这个方法产生离散均匀分布的整数,这些整数大于等于low,小于high。 low : int 产生随机数的最小值 high : int, optional 给随机数设置...

    方法

    numpy.random.randint(low, high=None, size=None, dtype='l')

    参数

    这个方法产生离散均匀分布的整数,这些整数大于等于low,小于high。

    • low : int
      产生随机数的最小值
    • high : int, optional
      给随机数设置个上限,即产生的随机数必须小于high
    • size : int or tuple of ints, optional
      输出的大小,可以是整数,或者元组
    • dtype : dtype, optional
      期望结果的类型

    实验

    这里写图片描述

    展开全文
  • JS随机整数函数

    千次阅读 2011-12-29 10:19:54
    document.write(parseInt... //输出0~10之间的随机整数 document.write(Math.floor(Math.random()*10+1)); //输出1~10之间的随机整数 function RndNum(n){ var rnd=""; for(var i=0;i rnd+=Math.floor(Mat
  • 在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而...
  • link中如何用一个产生0-6的随机整数的随机数函数rnd6产生一个0-9的随机数rnd9,代码怎么写?
  • 1)如果a大于b,那么生成0-b的随机整数函数只需要加个判断条件,即只要生成0-a的随机整数函数的随机值大于b,那么我们丢弃它,在重新生成一次。 2)如果a小于b,那么我们就要通过生成0-a的随机整数函数构造一...
  • 我们在之前的例子中都经常会使用到Math.random来产生
  • 基于短整数解问题,在格上设计出2个伪随机函数,第一个利用树状伪随机综合器的思想,达到并行化效果,第二个虽是串行构造,但降低了公钥尺寸。二者均具有小模数,而且是可证明安全的。与A Banerjer,C Peikert和A ...
  • 用js获取两数之间的随机整数函数

    千次阅读 2018-05-08 15:13:57
    function getRandom(min,max){ min=Math.ceil(min); max=Math.floor(max); return Math.floor(Math.random()*(max-...}ceil() 方法执行的是向上取整计算,它返回的是大于或等于函数参数,并且与之最接近的整数。...
  • php产生随机小数的函数

    千次阅读 2018-01-23 17:55:20
    承接上一篇博客,发放的红包金额不一定是整数,所以需要随机在红包金额区间内... // *产生随机小数的函数 // */ function randomFloat($min, $max) { return $min + mt_rand() / mt_getrandmax() * ($max - $min);
  • 主要用于矩阵排列顺序打乱,随机生成整数1~n范围内的整数。 matrix = randperm(n)%产生一组1-n的整数 matrix = randperm(n, a)%返回一组1-n范围内的a个整数 例子 >> matrix = randperm(10) matrix = 1 8 ...
  • pmfRND 输出给定 PMF 的随机整数 x = pmfRND(f,X) 返回 mxn 矩阵,其值是 Zipf 分布的, 其中f> 0是PMF(离散PDF),使得sum(f)= 1; X = [m,n]是期望的输出随机矩阵的大小。
  • 最近发现random库的两个函数random.choice(seq)和random.shuffle(seq) ...我们就用这两个函数生成1-25内不重复的10个随机整数 # random.choice import random nums = list(range(1, 26)) result = [] for i...
  • 怎么用数据结构算法实现利用随机函数产生N个随机整数(10000以上),对这些数进行多种方法进行排序?
  • 给定程序中,函数fun的功能是:调用随机函数产生20个互不相同的整数放在形参所指数组中(此数组在主函数中已置0) #include #include #define N 20 void fun(int *a) { int i, x, n = 0; x = rand() % 20; while...
  • 利用随机函数产生 20 个 10~90 之间的不重复整数。 将这些数拼接在一个字符串中,用逗号隔开。 每产生一个新数,要保证在该字符串中不存在。 最后将串中的整数分离存放到一个数组中,将数组的内容按由小到大输出。 ...
  • 编写函数实现随机产生指定范围的整数的功能 /*[1,10] [0,1)*10=[0,10)-----&gt;+1----&gt;[1,11)----&gt;下取整 Math.floor window.parseint()*/ /*[2,9] [0,1)---&gt;[0,8)---&gt;[2,10)*/ ...
  • 题目:产生1到10之间的随机整数,把这些随机整数装入一个10个长度的数据。要求,数组中数据不能重复 第一种方法: public class Csdn{ public static void main(String[] args) { int[] nums = new int[10]; ...
  • 用Int和Rnd函数生成指定范围的随机整数;用Randmize函数初始化随机数发生器;用Val函数将数字字符串转换为数值。在窗体上放置三个文本框,分别用于输入随机数的上界和下界,显示生成的随机整数;一个命令按钮用于...
  • 给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数 问题: 给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数。 解答: 假设我们要等概率生成一个3位的10进制数(000 - 999),我们...
  • 得到1至50的mysql随机整数FLOOR(1 + (RAND() * 50)); 转载于:https://www.cnblogs.com/zqonline/archive/2011/03/29/1998946.html
  • 掌握VB中常用的Int、Rnd两个数学函数,学会生成某个区间随机数的方法,通过随机函数产生2个两位正整数,求这2个数之和并显示出来。
  • 想了一天,郁闷呀! 其实也就是在MIn 和MAX 之间选N个数 平均值是AVER  那么可转换为在0~(MAX-MIN) ...现有数值iAver*Count/Sum倍保证整数就加上0.5.这时在求和Sum1,Sum1就接近或等于iAver*Count这时在数据上在修
  • 本博客展示了两个函数: (1)RandomCreatFunc()函数,生成任意区间的随机数,包括负数区间; (2)RandomArray()函数,生成1-N的随机序列;
  • 4.给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数 问题分析:现在给了一个能随机生成1~5的随机函数,怎样利用这个已知条件生成一个1~7的随机函数呢?既然要生成的是随机数那么生成1,2,3,4,5,6,7...
  • 如果要求不能用ceil(rand())函数 间接地生成一定范围内的随机整数,则可以使用以下几种方案: (比如:产生1到7的随机整数) unidrnd(7), %R = unidrnd(N),产生一个最大值为N的随机正整数R,R为1到N之间; ...

空空如也

空空如也

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

产生随机整数的函数