我试图取一个货币值(使用decimal
)并将其分解为随机部分,这些部分分布在 14 个不同的标签中,这些标签加起来就是原始值。
示例:值 50.00
- 1 = 1.50
- 2 = 3.50
- 3 = 7.00
- 4 = .75
- 5 = 1.25
- 6 = 2.00
- 7 = 5.50
- 8 = 6.10
- 9 = .60
- 10 = .50
- 11 = 5.30
- 12 = 3.00
- 13 = 3.00
- 14 = 10.00
(不是确切的值,而是像这样的随机值,总计为总数)
问题是我无法弄清楚以下内容:
- 第一个随机数很高(如果值为 50,第一个数字通常是 40 左右),其余数字低于 5 左右
- 其次,输出数字不是十进制格式 - 它们都是整数
- 最后,一半是正数,一半是负数。它确实加起来是我想要的数字,但我不想要负输出。
我正在使用的代码:
private void generatewins(Decimal amount)
{
Decimal initialValue = amount;
Decimal currentRemainder = amount;
var values = new List<int>();
Label[] labels = { win1, win5, win10, win9, win6, win2, win3, win7, win8, win11, win13, win12, win4 };
Random rnd = new Random();
Decimal remainingPortion = initialValue;
for (int i = 0; i < 13; i++)
{
Decimal val = currentRemainder - rnd.Next(14 - i);
currentRemainder -= val;
labels[i].Text = Convert.ToString(val) + "";
win14.Text = currentRemainder.ToString();
}
}
为了澄清一些事情,我使用标签的原因是我必须将这些标签放在表单上的特定位置,以便它们会随着表单大小和表单上的另一个对象而变化。我认为使用标签会更容易。此外,数字 14 不是余数的一部分。它被设置为从初始值中取出剩余部分,因为当我将它添加到随机拆分值中时,它总是会出现 0 并且其他 13 个值不会与初始值相加。