生成随机轮询号码

LuM*_*uMa 2 c random

我为这个简单的问题苦苦挣扎:我想创建一些随机的民意调查数字.我有4个变量需要填充数据(实际上是一个整数数组).这些数字应代表随机百分比.所有百分比均为100%.听起来很简单.

但我认为这并不容易.我的第一次尝试是生成一个介于10和base(base = 100)之间的随机数,并减去基数中的数字.这是3次,最后一个值被分配了基数.有更优雅的方式吗?

我的问题用几句话说:

如何用随机值填充此数组,这些值在加在一起时将为100?

int values[4];

Edw*_*uck 5

您需要编写代码来模拟您正在模拟的内容.

因此,如果您有四个选择,则生成随机数的样本大小(0..1*4),然后将所有0,1,2和3加起来(记住4不会被选中).然后将计数除以样本大小.

for (each sample) {
   poll = random(choices);
   survey[poll] += 1;
}
Run Code Online (Sandbox Code Playgroud)

使用计算机模拟事物很容易,简单的模拟速度非常快.

请记住,您正在使用整数,并且整数不会很好地划分而不将它们转换为浮点数或双精度数.如果你错过了几个百分点,则可能与整数除以余数有关.