rand()中的不均匀分布(C语言)
rand()中的不均匀分布(C语言),c,random,distribution,C,Random,Distribution,我想看看是否有任何方法可以生成分布不均匀的随机数,我想定制这些随机数。 例如: 在我想要的100个生成的数字中: 10A 20b 40摄氏度 10天 15 E 5楼 我想说的是,我是编程新手,所以试着用你的简单答案来帮助我。 非常感谢。这是一个非常简单但通常非常有效的解决方案,可以解决以下问题: char *samples = "AABBCCDDEEFFFFF"; char randomSample() { return sample[rand() % strlen(samples)];
我想看看是否有任何方法可以生成分布不均匀的随机数,我想定制这些随机数。
例如:
在我想要的100个生成的数字中:
10A
20b
40摄氏度
10天
15 E
5楼
我想说的是,我是编程新手,所以试着用你的简单答案来帮助我。
非常感谢。这是一个非常简单但通常非常有效的解决方案,可以解决以下问题:
char *samples = "AABBCCDDEEFFFFF";
char randomSample() {
return sample[rand() % strlen(samples)];
}
首先设置所需的分布,然后从该分布中随机选取。因此,构建一个包含100个元素的数组,其中10个元素是A,20个元素是B等等,然后按
rand()%100
(尽管会有一个小偏差)进行索引。一个简单的方法是生成0到99之间的数字,并将输出设置为A从0到9,B从10到29等等on@B.Go:聪明、易懂。@RobertHarvey在许多地方使用编码,就像从数字音量控制器编码灯光颜色(类别)一样,始终介于0和0之间255@kaylum看起来并不完全相关,至少对于这个用例来说太复杂了。谢谢!