【发布时间】:2013-05-30 00:33:26
【问题描述】:
我正在尝试获取货币值(使用 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 个值不会与初始值相加。
【问题讨论】: