【发布时间】:2020-05-29 15:54:41
【问题描述】:
所以问题是随机球的范围是 0-100(100%),而 30% 可以是红色,20% 可以是蓝色,50% 可以是绿色,我是这样做的: 如果几率小于 20 则 cout red 如果几率小于 50 则选蓝 如果机会小于或等于 100,则选择绿色 有什么建议可以解决这个问题吗?
【问题讨论】:
标签: loops if-statement random
所以问题是随机球的范围是 0-100(100%),而 30% 可以是红色,20% 可以是蓝色,50% 可以是绿色,我是这样做的: 如果几率小于 20 则 cout red 如果几率小于 50 则选蓝 如果机会小于或等于 100,则选择绿色 有什么建议可以解决这个问题吗?
【问题讨论】:
标签: loops if-statement random
百分比的最佳表示是浮点数,0% 是 0,100% 是
谢天谢地,C# 为此提供了一个很棒的自以为是的函数:Random.NextDouble()
要生成随机浮点数,只需像这样调用它:
随机种子_随机数_生成器=新随机(); red_portion = seeded_random_number_generator.NextDouble();
最后要使用你的双倍,只需将它乘以另一个因素。
area_to_paint_red = red_portion * shape_area
参考: https://docs.microsoft.com/en-us/dotnet/api/system.random.nextdouble?view=netframework-4.8
【讨论】:
如果你有 [1-100] 范围内的随机数,那么逻辑将是
if (num <= 30) return "red"; // covers [1-30]
if (num <= 30+20) return "blue"; // covers [31-50]
return "green"; // covers [51-100]
【讨论】: