已知rand7(),求rand10().
已知有个rand7()的函数,返回1到7随机自然数,让利用这个rand7()构造rand10() 随机1~10。
view plain
根据排列组合,连续算两次rand7出现的组合数是7*7=49,这49种组合每一种出现考虑是相同的。
怎么从49平均概率的转换为1到10呢?
方法是:
1.rand7执行两次,出来的数为a1.a2.
2.如果a1*7+a2<40,b=(a1*7+a2)>=40,重复第一步)
int rand10()
{
int a71, a72, a10;
do
{
a71 = rand7() - 1;
a72 = rand7() - 1;
a10 = a71 *7 + a72;
} while (a10 >= 40);
return (a10) / 4 + 1;
}
分析:
a10 = a71 *7 + a72; 会产生0~48共49个数,每个数产生的概率都是1/49.
生成的数只要<40,那么就跳出循环,那么共有40个数(0~39),每个数的概率相等,那么可以认为每个数的概率为1/40;
最后(a10) / 4 ;也就是把每这40个数切割成10等分,最后产生0~9, 10个数,每个数的概率都是1/10, 再加上1,产生的数为1~10,即rand10().
而且我们可以得到一般规律根据 RndM 得到 RndN
如果 M > N,那最简单,只要剔除 M > N 的数据,返回就可以了。
如果 M < N,首先用延展方法将 M 延展到 xM,xM > N然后再用上面的办法获取。
分享到:
相关推荐
该函数用了 Mersenne Twister 中已知的特性作为随机数发生器,mt_rand() 可以产生随机数值的平均速度比 libc 提供的 rand() 快四倍。 mt_rand() 比rand() 快四倍 mt_rand — 生成更好的随机数 (PHP 3 >= 3.0.6, ...
mt_rand() 则是用了 Mersenne Twister 中已知的特性作为随机数发生器,它产生随机数值的平均速度比 libc 提供的 rand() 快四倍。所以在PHP中mt_rand()函数是非正式用来替换rand()的。 语法: rand
MATLAB 考试试题(1) 产生一个1x10的随机矩阵,大小...a=10*rand(1,10)-5; b=sort(a,'descend') 1.请产生一个100*5的矩阵,矩阵的每一行都是[1 2 3 4 5] 2. 已知变量:A=’ilovematlab’;B=’matlab’, 请找出:
已知A=[0 9 6;1 3 0];B=[1 4 3;1 5 0];写出下列各指令运行的结果。A & B 的运行结果ans= 0 1 1,1 1 0 ;A ./ B 的运行结果ans= 0 2.2500 2.0000,1.0000 0.6000 NaN 。2. 产生4阶全0方阵的命令为 zeros(4) ;产生3...
x = rand(3,1); y = rand(3,1); z = 2.1*x - 3.4*y + 19; [slopex,slopey,C] = Threepoints2planez(x,y,z) 斜率= 2.1000 倾斜 = -3.4000 C = 19.0000 更新: 写完这个函数后,我找到了 Kevin Moerman 的 ...
●设某流水线计算机主存的读/写时间为 lOOns,有一个指令和数据合一的 cache,已知该 cache 的读/写时间为 lOns,取指令的命中率为 98%,取数的命中率为 95%。在执行某类程序时,约有 1/5 指令需要存/取一个操作数...
在此 Matlab 应用程序中,仔细阅读了 Jean Le Rand D'Alambert 的用于二阶线性微分方程的化简方法,并将几个分析示例与 matlab 求解应用程序进行了比较。 **Jean d'Alembert 是一位法国数学家,他是微分方程研究...
背景: 用python画AR模型的时序图。...e = np.random.rand(num) x = np.empty(num) 平稳AR(1) a = -0.5 x[0] = 2 for i in range(1,num): x[i] = a*x[i-1]+e[i] plt.subplot(321,title = AR({0}):x[t]={1}*x[t-1]+e
也可以传入频率(如果数据已经离散化)或概率(如果概率已知或已经估计) - 见下文。 using InformationMeasures data_1 = rand(100) data_2 = rand(100) data_3 = rand(100) # Entropy ent_1 = get_entropy(data...
用法与 Matlab rand() 函数非常相似,但也允许使用选项结构来提高操作速度。 例子: 示例 0:从均匀分布生成 32 位随机数在区间 [0, 1] 上。 r = truerng() 示例 1:从均匀分布上生成 100 个值区间 [a, b]。 a = ...
程序“rand_log_concave.m”从任意对数凹面广义pdf(即,已知其归一化常数的pdf)生成随机数。 pdf 的日志必须是凹的。 特别是,该程序可用于从截断的对数凹面 pdf 中高效地生成随机数,例如截断的正态、β、伽马等...
查找对Google BigQuery公开且已知的已创建存储库的总数。 SELECT COUNT(repository_url) FROM [githubarchive:github.timeline] WHERE type = "CreateEvent" AND payload_ref IS NULL 通过URL选择存储库的子集。 这...
rand(n):用于生成一个n x n的随机矩阵,元素的值在0和1之间。 eig(A):用于计算矩阵A的特征值和特征向量。 inv(A):用于计算矩阵A的逆矩阵。 det(A):用于计算矩阵A的行列式。 fft(x):用于进行快速傅里叶变换...
包括数组和向量、矩阵、张量的区别,重点是解决matlab中如何创建N维数组以及怎么给他循环赋值等等,非常详细地总结了一系列创建二维数组的方法如eye、rand、ones等近十种创建方法,其中有从已知的数组(矩阵、向量)...
带有可选种子正确均匀分配基于Ziggurat算法的正态分布随机数高斯采样器可扩展的体系结构:添加您自己的随机性源很容易种子可以是任意长度的字符串可以随时保存和恢复当前PRNG的状态,因此可以从已知状态重播序列不同...
JupyterHub服务器必须与具有已知令牌并具有管理员权限的服务一起运行。 pip install jupyterhub dockerspawnersudo npm install -g configurable-...
权重系数呢是为了消除样本数据的 偏差,通常是⼀个rand函数在0-1之间的取值。通过输⼊变量Xi和其⾃⼰的权重系数Wi的乘积的求和输⼊到神经元上。此时神经元得到了输 ⼊变量和其权重的乘积累加和。通过**映射函数F(x...
此功能可用于生成可上传到任意波形发生器 (AWG) 的波形数据,以模拟具有已知抖动量的真实数字时钟,用于抗扰度和其他类似测试应用。 随机抖动是使用 matlab 的 rand 函数生成的。 您可以选择两种不同的分布来生成...
微机原理课设程序设计