Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
rand()中的不均匀分布(C语言)_C_Random_Distribution - Fatal编程技术网

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看起来并不完全相关,至少对于这个用例来说太复杂了。谢谢!