我正在制作一个根据类型随机生成星星的系统。第一部分当然是告诉系统基于稀有性的星形是什么类型。我很难根据随机数生成器缩短实际的分配部分。这是我目前的解决方案。
void StarTypeGen () {
randomGen (x: 0, y: 229000);
if (Rng <= 228000) {
StarType++;
if (Rng <= 36000) {
StarType++;
if (Rng <= 22500) {
StarType++;
if (Rng <= 9000) {
StarType++;
if (Rng <= 3750) {
StarType++;
if (Rng <= 1875) {
StarType++;
if (Rng <= 10) {
StarType++;
}
}
}
}
}
}
}
}
答案 0 :(得分:2)
使用值预加载数组并循环打破第一个错误条件:
int[] nums = new int[] { 228000, 36000, 22500, 9000, 3750, 1875, 10 };
for (int i = 0; i < nums.Length; i++)
{
if (Rng > nums[i]) break;
StarType++;
}