我的问题如下:我需要为调度创建一些随机值。例如,给出了处理时间。假设机器上的作业 j 得到一个介于 (1,99) 之间的随机值。那是这台机器上的工作需要的时间。
现在,我需要操纵这个随机值。我想说的是所有随机处理时间,其中 20% 是零处理时间。那么有人知道如何在特定时间给整数数组一个特定数量的数组吗?
这里是正常的随机数:
p_machine_job_completionTime = new int[Constants.numberMachines][];
for (i = 0; i < Constants.numberMachines; i++)
{
p_machine_job_completionTime[i] = new int[Constants.numberJobs];
for (j = 0; j < Constants.numberJobs; j++)
{
p_machine_job_completionTime[i][j] = random.Next(1, 99);
}
}
现在,作业可能会跳过一台机器,因此处理时间为 0。是否可以限制随机值,并保证我所有随机值的 x% 的值为 0? 例如:
20% of p_machine_job_completionTime[i][j] = 0
80% of p_machine_job_completionTIme[i][j] = random (1,99)
我非常感谢任何微小的建议。
最佳答案
只需分开两种情况:当返回 0 时为 20%,当结果为 1..99 时为 80%
Random random;
...
int value = random.Next(5) == 0 ? 0 : random.Next(99) + 1;
关于c# - 随机具有特定数量的特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21412958/