Was*_*RAR 23 .net c# random generator
我需要你帮助解决一个小问题.我有四个标签,我想在它们上面显示0到100之间的随机值,它们的总和必须是100.
这是我的代码:
private void randomly_Click(object sender, EventArgs e)
{
double alpha = 0, beta = 0, gamma = 0, delta = 0;
double temp;
int tempDouble;
Random rnd = new Random();
alpha = rnd.Next(0, 100);
temp = 100 - alpha;
tempDouble = (int)temp;
beta = rnd.Next(0, tempDouble);
temp = 100 - (alpha + beta);
tempDouble = (int)temp;
gamma = rnd.Next(0, tempDouble);
temp = 100 - (alpha + beta + gamma);
tempDouble = (int)temp;
delta = rnd.Next(0, tempDouble);
temp = alpha + beta + delta + gamma;
temp = 100 - temp;
temp = temp / 4;
alpha = alpha + temp;
beta = beta + temp;
gamma = gamma + temp;
delta = delta + temp;
cInsertion.Text = alpha.ToString();
cMoyens.Text = beta.ToString();
cInternational.Text = gamma.ToString();
cRecherche.Text = delta.ToString();
}
Run Code Online (Sandbox Code Playgroud)
问题在于我给alpha获得biggest
值的机会,以及delta的lowest
值.
有没有办法让他们有同样的机会拥有真正的random
价值?
Iva*_*rić 45
你可以这样做:
double alpha = 0, beta = 0, gamma = 0, delta = 0, k = 0;
Random rnd = new Random();
alpha = rnd.Next(0, 100);
beta = rnd.Next(0, 100);
gamma = rnd.Next(0, 100);
delta = rnd.Next(0, 100);
k = (alpha + beta + gamma + delta) / 100;
alpha /= k;
beta /= k;
gamma /= k;
delta /= k;
cInsertion.Text = alpha.ToString();
cMoyens.Text = beta.ToString();
cInternational.Text = gamma.ToString();
cRecherche.Text = delta.ToString();
Run Code Online (Sandbox Code Playgroud)
这样你就说让我们为所有4个变量取一个随机值,然后我们将它们缩放一个因子k
,使它们的总和为100.
归档时间: |
|
查看次数: |
2771 次 |
最近记录: |