精华内容
下载资源
问答
  • 随机生成整数

    2011-06-13 13:17:00
    为了测试的方便,有时需要随机生成n个整数,代码如下: #include#include#include#include#includeusing namespace std;////////////////////////////////////////////***函数名: randomGenerated**功能: 随机生成...

    为了测试的方便,有时需要随机生成n个整数,代码如下:

      

    展开全文
  • 给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数 问题: 给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数。 解答: 假设我们要等概率生成一个3位的10进制数(000 - 999),我们...

    给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数

    问题:

    给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数。

    解答:

    假设我们要等概率生成一个3位的10进制数(000 - 999),我们可以在 随机生成整数0到9的函数 基础上,随机生成3个数字组成三位数就得到了结果。

    这里类似,我们首先必须认识到:任何一个数都可以用5进制的数来表示,如12 = 5进制(22) = 2*5 + 2。因此假设我们要随机生成[0,444]范围的数,我们只要随机生成3个5进制的数字组合就可以。

    这里的主要问题是:7不是5的幂次方。

    但是我们可以将某一个5的幂次方均分成 7 段(分别为0 - 6,等概率的落到每一段),利用5进制随机成一个数,看这个数在哪一个段,就代表我们要生成哪一个数字,这样就保证了等概率的生成0 - 6.

    有一个小的问题就是:5的幂次方不能整除7,会遗漏最高的几个数。但是我们这里只要数字足够大,则遗漏的概率相当的小。

     

    下面是简单的代码:

    const int K = 10;//[0, 5^K - 1]
    int Base[K],Rnd[K],Step; //Step表每个区间的长度
    int Rand15() //已有的随机生成1 - 5的随机函数
    {
        return rand()%5 + 1;
    }
    void Init()
    {
        Base[0] = 1;
        for(int i=1 ;i<K; ++i)
            Base[i] = Base[i-1]*5;
        Step = Base[K-1]*5/7;
        //cout<<"Step = "<<Step<<"\tStep*7 = "<<Step*7<<endl;
        srand(time(0));
    }
    int Rand17() //我们需要写的随机生成1 - 7的随机函数
    {
        int Sum = 0;
        for(int i=0 ;i<K; ++i) //随机生成K个1到5的随机数
        {
            Rnd[i] = Rand15();
            Sum += (Rnd[i]-1)*Base[i];
        }
        return Sum/Step + 1;
    }

    这里K = 10的时候,保证遗漏了2个数,即落到余数里面的概率是:2/9765625.

    -------------------------------------------------------------------------------------------------------------------------------------
    :给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数。

    答:此题的关键是让生成的 1 到 7 的数出现概率相同。

    产生K个数(k>1) 假定产生的数分别为n1,n2,n3,n4...

    那么定义产生的数为n1-1+(n2-2)*5+(n3-1)*5^2+(n4-1)*5^3........

    于是产生的数位于区间(0,5^k-1)然后把5^k分成k等分,产生的数位于哪个等分就是那个产生的随机数(0~6),然后+1即可如果位于k等分的余数范围,则重新执行一次上述过程

    不用担心余数问题,当k取3时落到余数范围的概率就已经降低为6/125 

     

    代码如下:

    int rand7() {

    int a;

    while((a = rand5() * 5 + rand5()) > 26);

    return (a - 3) / 3;

    }

     

    大概解释一下:

    1. 通过 rand5()*5+rand5() 产生 6 7 8 9 10 11 …… 26,27 28 29 30 这25个数,每个数的出现机率相等

    2. 只需要前面 3*7 个数,所以舍弃后面的4个数

    3. 将 6 7 8 转化为 1,9 10 11 转化为 2,……,24 25 26 转化为 7。公式是 (a-3)/3

     

    特别提示:随机生成7个1~5之间的数,相加后再模7加1这种方法是错误的,因为他们生成的概率不是随机的

    展开全文
  • 给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数。 解答: 假设我们要等概率生成一个3位的10进制数(000 - 999),我们可以在 随机生成整数0到9的函数 基础上,随机生成3个数字组成三位数就...

    问题:

    给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数。

    解答:

    假设我们要等概率生成一个3位的10进制数(000 - 999),我们可以在 随机生成整数0到9的函数 基础上,随机生成3个数字组成三位数就得到了结果。

    这里类似,我们首先必须认识到:任何一个数都可以用5进制的数来表示,如12 = 5进制(22) = 2*5 + 2。因此假设我们要随机生成[0,444]范围的数,我们只要随机生成3个5进制的数字组合就可以。

    这里的主要问题是:7不是5的幂次方。

    但是我们可以将某一个5的幂次方均分成 7 段(分别为0 - 6,等概率的落到每一段),利用5进制随机成一个数,看这个数在哪一个段,就代表我们要生成哪一个数字,这样就保证了等概率的生成0 - 6.

    有一个小的问题就是:5的幂次方不能整除7,会遗漏最高的几个数。但是我们这里只要数字足够大,则遗漏的概率相当的小。

     

    下面是简单的代码:

    const int K = 10;//[0, 5^K - 1]
    int Base[K],Rnd[K],Step; //Step表每个区间的长度
    int Rand15() //已有的随机生成1 - 5的随机函数
    {
        return rand()%5 + 1;
    }
    void Init()
    {
        Base[0] = 1;
        for(int i=1 ;i<K; ++i)
            Base[i] = Base[i-1]*5;
        Step = Base[K-1]*5/7;
        //cout<<"Step = "<<Step<<"\tStep*7 = "<<Step*7<<endl;
        srand(time(0));
    }
    int Rand17() //我们需要写的随机生成1 - 7的随机函数
    {
        int Sum = 0;
        for(int i=0 ;i<K; ++i) //随机生成K个1到5的随机数
        {
            Rnd[i] = Rand15();
            Sum += (Rnd[i]-1)*Base[i];
        }
        return Sum/Step + 1;
    }

    这里K = 10的时候,保证遗漏了2个数,即落到余数里面的概率是:2/9765625.

    展开全文
  • 给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数。解答: 假设我们要等概率生成一个3位的10进制数(000-999),我们可以在随机生成整数0到9的函数基础上,随机生成3个数字组成三位数就得到了结果。 ...

    问题:

    给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数。

    解答:

    假设我们要等概率生成一个3位的10进制数(000 - 999),我们可以在 随机生成整数0到9的函数 基础上,随机生成3个数字组成三位数就得到了结果。

    这里类似,我们首先必须认识到:任何一个数都可以用5进制的数来表示,如12 = 5进制(22) = 2*5 + 2。因此假设我们要随机生成[0,444]范围的数,我们只要随机生成3个5进制的数字组合就可以。

    这里的主要问题是:7不是5的幂次方。

    但是我们可以将某一个5的幂次方均分成 7 段(分别为0 - 6,等概率的落到每一段),利用5进制随机成一个数,看这个数在哪一个段,就代表我们要生成哪一个数字,这样就保证了等概率的生成0 - 6.

    有一个小的问题就是:5的幂次方不能整除7,会遗漏最高的几个数。但是我们这里只要数字足够大,则遗漏的概率相当的小。

     

    下面是简单的代码:

    const int K = 10;//[0, 5^K - 1]
    int Base[K],Rnd[K],Step; //Step表每个区间的长度
    int Rand15() //已有的随机生成1 - 5的随机函数
    {
        return rand()%5 + 1;
    }
    void Init()
    {
        Base[0] = 1;
        for(int i=1 ;i<K; ++i)
            Base[i] = Base[i-1]*5;
        Step = Base[K-1]*5/7;
        //cout<<"Step = "<<Step<<"\tStep*7 = "<<Step*7<<endl;
        srand(time(0));
    }
    int Rand17() //我们需要写的随机生成1 - 7的随机函数
    {
        int Sum = 0;
        for(int i=0 ;i<K; ++i) //随机生成K个1到5的随机数
        {
            Rnd[i] = Rand15();
            Sum += (Rnd[i]-1)*Base[i];
        }
        return Sum/Step + 1;
    }

    这里K = 10的时候,保证遗漏了2个数,即落到余数里面的概率是:2/9765625.

    转载于:https://www.cnblogs.com/wickedboy237/archive/2013/04/12/3017575.html

    展开全文
  • 给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数。解答: 假设我们要等概率生成一个3位的10进制数(000 - 999),我们可以在 随机生成整数0到9的函数 基础上,随机生成3个数字组成三位数就得到了结果。 ...
  • 4.给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数 问题分析:现在给了一个能随机生成1~5的随机函数,怎样利用这个已知条件生成一个1~7的随机函数呢?既然要生成的是随机数那么生成1,2,3,4,5,6,7...
  • Mysql 随机生成整数

    2021-06-17 17:23:09
    MySQL 函数 CEILING() 向上取整 ...Mysql 随机生成 指定位数 的随机整数 -- 生成 3 位的随机整数 SELECT CEILING(RAND() * 900 + 100); -- 生成 4 位的随机整数 SELECT CEILING(RAND() * ..
  • 给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数。 我的想法: 编写一个生成0和1的随机函数: rand_01() step1. 调用给定的随机函数original_rand()生成一个数  如果==3 goto step1  如果 ...
  • 题目:给定能随机生成整数1到
  • 给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数。 我的想法: 编写一个生成0和1的随机函数: step1. 调用给定的随机函数original_rand()生成一个数 如果==3 goto step1 如果<3 return 0 如果>3 ...
  • 在一定范围内随机生成整数,并统计每个整数出现的次数 (Python) 知识储备 需要用到random,随机数标准函数库 random.randint(a, b):在[a, b]中随机生成数 例:随机生成50个介于[1, 20]间的整数, 然后统计每个整数...
  • java 随机生成整数

    2011-12-17 16:57:47
    随机数生成整数1-100,并把连续大于某个数n次的数输出
  • scala 随机生成整数In Scala programming language, there is an option for the programmer to use libraries of java because of its interoperability with java. 在Scala编程语言中,程序员可以选择使用Java库...
  • 一个特例:已知一个随机数生成函数f3(),即以相同的概率随机返回0, 1, 2(返回每个数的概率均为1/3),现要求通过调用f3()实现一个函数f5()。 解答方法:  (1)最基本的思路:  计算机中所有的数都是由二...
  • java中随机生成整数

    2021-01-31 18:58:33
    本文讲解java中如何生成随机数。 一般来说说提到随机数,大家想到的肯定是random,那就对了, 这是系统自带的方法,我们直接使用就可以了。 首先,random() 方法的定义是:可返回介于 0 ~ 1 之间的一个随机数。 ...
  • 在网上无意中看到了这个题目,觉得很有意思,想了一下,觉得应该是通过构建一个两位数然后取余得到1~7的数。设这个两位数进制为x,则满足 最大的两位数:x*5+5 最小的两位数:x*1+1, 他们之间的差必须是7的倍数,...
  • 总结:最好使用arc4random_uniform(uint32_t upper_bound)函数。 ... 其生成随机整数范围是[0, upper_bound)。 upper_bound为无符号整型。 生成一定范围的随机数:把生成的随机数都加上最小...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,592
精华内容 3,036
关键字:

随机生成整数