`

已知函数rand7()产生1到7的随机数,利用rand7()如何构造出函数rand10(),使得其产生随机数1~10

 
阅读更多
此系列题目和思路均来自网络(博客等),在这里表示感谢。

题目

已知函数rand7()产生1到7的随机数,利用rand7()如何构造出函数rand10(),使得其产生随机数1~10

下面是算法的C++实现。

#include<cstdlib>
#include<iostream>
using namespace std;

int rand7(){

return rand()%7+1;
 }

int rand10() {

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

int main() {
int a[10];
for(int i=0;i<10;i++)
	a[i] = 0;
for(int i=0;i<10000000;i++) {
	int x = rand10(); 
 a[x-1] = a[x-1] + 1 ;
}
for(int i=0;i<10;i++) {
cout<<i<<": "<<a[i]<<endl;
}
return 0;
}




输出结果


0: 999208
1: 998657
2: 999309
3: 1000988
4: 1001883
5: 999741
6: 1000210
7: 998822
8: 999737
9: 1001445


从输出结果可以看出效果还是不错的。

在此感谢以下本文参考的博客(排名不分先后):
1. http://blog.csdn.net/furturerock/article/details/6850634

2. http://blog.csdn.net/v_july_v/article/details/6803368
分享到:
评论

相关推荐

    PHP随机数函数rand()与mt_rand()的讲解

    PHP中的rand()与mt_rand()函数是用于生成随机数的函数,这两个函数都可以产生一个指定范围内的单个随机整数。rand()函数自PHP早期版本就存在,而mt_rand()是后来加入的,用于提供更好的随机数生成功能。在了解rand()...

    MySQL的指定范围随机数函数rand()的使用技巧

    MySQL中的`RAND()`函数是一个非常实用的工具,用于生成0到1之间的随机浮点数。在某些场景下,我们可能需要生成指定范围内的随机整数,例如在模拟数据或者进行测试时。`RAND()`函数虽然不能直接接收参数来定义这个...

    随机数与洗牌算法

    **问题描述**:已知有一个`rand7()`函数,可以返回1到7之间的随机整数,如何设计一个函数`rand10()`,使其能够返回1到10之间的随机整数? **解决方案**: 为了确保生成的随机数均匀分布在1至10之间,我们可以通过...

    excel随机数抽取

    例如,要生成1到10之间的整数,公式应为 `=INT(RAND()*(10-1+1))+1`。 二、多行多列随机数 如果需要在多个单元格中生成随机数,可以直接复制已输入公式的单元格。Excel会自动保留公式并根据需要生成新的随机数。 ...

    柯西分布随机数 C语言实现

    生成柯西分布的随机数通常需要通过变换法,即从已知的简单分布(如均匀分布或正态分布)生成随机数,然后通过特定的函数映射到柯西分布。常见的方法包括Box-Muller变换或者逆累积分布函数(Inverse Cumulative ...

    含随机数应用的小程序

    根据给定文件的信息,我们可以分析出这是一个利用C/C++语言实现的小程序,主要功能是生成随机数,并通过Box-Muller变换将这些随机数转换为正态分布的随机数序列。接下来,我们将深入探讨该程序涉及的关键技术点。 #...

    产生正态白噪声序列(1) 打印出前50个数 ⑵分布检验⑶均值检验⑷方差检验

    题目给出了前50个数的列表,可以看到它们是介于0和1之间的浮点数,这与使用`rand`函数的结果相符。 3. **分布检验**: 分布检验通常是对数据是否符合特定概率分布进行检查,例如正态分布。题目中使用了直方图`...

    matlab开发-随机数FromUserDefinedDistribution

    对于给定的均匀分布随机数`u`(0到1之间),`myQuantile(u)`将返回对应PDF的值。MATLAB中的`finv`函数可以用于从已知CDF计算ICDF,但在这里我们需要自定义。 4. **生成随机数**:现在,我们可以使用`myQuantile`...

    某些特殊概率分布之间的相互变换1

    实现这一目标的方法是过滤掉大于7的随机数,即每当`rand_10()`产生8、9或10这三个数时,我们将其忽略,再次调用`rand_10()`,直到得到一个介于0到6之间的数为止。 在理论上,我们需要确保`rand_7()`生成的每一个数...

    第4章 概率分布与随机数_matlab在数理统计中的应用_

    MATLAB提供了`rand`函数生成[0,1)区间的均匀随机数,以及`randi`函数生成指定范围内的整数随机数。通过这些基本的随机数生成器,我们可以构造更复杂的随机过程,如布朗运动或马尔可夫链。 除了基础的分布函数,...

    基于MATLAB的随机信号分析方法

    - 反函数法:如果已知随机变量X的概率密度函数(fX(x)),可以通过找到其分布函数FX(x)的反函数FX-1(r),利用(0,1)区间的均匀随机数r来生成对应分布的随机数。例如,指数分布和瑞利分布的随机数生成就是这种方法的...

    2_2P_Norm_Select.rar_2_2P_Norm_Select_舍选法_随机数 c++_高斯 随机数_高斯分布

    其基本思路是:从一个已知的均匀分布中随机选取数值,然后通过特定的映射函数将这些数值转换为需要的分布形式。在高斯分布的情况下,我们可以使用Box-Muller变换或Ziggurat算法等方法。 高斯分布,也称为正态分布,...

    随机信号分析实验报告范文.pdf

    例如,MATLAB中的`rand()`函数就可生成[0,1]区间内的均匀分布随机数,`rand(2,4)`则能生成2行4列的随机数矩阵。 2. 随机变量的仿真 通过函数变换原理,可以将已知分布的随机变量转换为其他分布的随机变量。例如,...

    C 代码 应用蒙特卡罗方法来估计函数的积分 在一维单位线的长度上.rar

    在`line_monte_carlo`函数中,首先会定义一个随机数生成器,如使用`rand()`函数,以产生[0,1)之间的随机数。然后,这个函数可能会包含以下步骤: 1. **设定积分范围**:定义积分的下限和上限,通常在我们的例子中为...

    matlab开发-randgamma

    此外,可能会使用可视化工具如`histogram`或`plot`函数来绘制生成的随机数的直方图,以便与伽马分布的理论曲线进行对比,如`rand_gamma_test.png`所示。 `rand_gamma.m~`和`rand_gamma_test.m~`可能是这两个文件的...

    【优化求解】基于matlab模拟退火算法求解函数极值问题【含Matlab源码 1203期】.zip

    MATLAB提供了丰富的随机数生成函数,如`randn`或`rand`,用于产生这种随机扰动。 4. **计算能量差**:能量差ΔE表示新状态与旧状态的函数值之差,即`ΔE = f(x') - f(x)`。若新状态的函数值更低,则接受新状态;...

    山东大学MATLAB编程指导课件第7章matlab信号处理函数.pptx

    1. 伪随机噪声生成:MATLAB中的`rand`函数可以生成均匀分布的随机数,而`randn`则用于生成符合高斯分布的白噪声。例如,`u=rand(N,1)`生成一个N阶的0.5均值、[0,1]范围内的均匀分布随机数列;`u=randn(1,N)`则生成一...

    基于MATLAB的随机信号分析方法.ppt

    a) 均匀随机数的产生:使用`rand(m,n)`函数,可以生成m×n大小的[0,1)区间内的均匀分布随机数矩阵。 b) 任意分布随机数的产生: - 反函数法:如果已知随机变量X的概率密度函数(fX(x)),可以通过反函数FX^(-1)(r...

Global site tag (gtag.js) - Google Analytics