C#:如何将随机 int 值分配给变量?
Posted
技术标签:
【中文标题】C#:如何将随机 int 值分配给变量?【英文标题】:C#: How to assign random int values to variables? 【发布时间】:2020-07-09 21:49:57 【问题描述】:我制作了一个骰子类,其中包含一个使用 random.next 确定 1-6 的随机 int 值的方法。
Fairdice.cs
:
class FairDice
//defining variable and property
private Random rnd;
public int Current get; private set;
public FairDice()
rnd = new Random(Guid.NewGuid().GetHashCode());
Current = 0;
public int FRoll()
Current = rnd.Next(1, 7);
return Current;
RollDice.cs
具有用于打印的循环。
static class RollDice
public static void Roll(this int count, Action action)
for (int i = 0; i < count; i++)
action();
Program.cs
包含这段代码,它会打印出 1-6 之间的 5 个随机值:
FairDice fd = new FairDice();
5.Roll(() => Console.WriteLine("Dice: " + fd.FRoll()));
问题:我希望在每个变量中分配随机值并将它们存储并保存在列表或数组中以供将来使用。
澄清:
假设它打印出数字:1, 2, 3, 4, 5
- 然后我希望为每个值分配一个变量:a = 1, b = 2, ... f = 5
。
和/或简单地将值存储在数组1, 2, 3, 4, 5
有什么办法吗?
【问题讨论】:
你的意思是“在每个变量中”? 可以说它打印出数字:1、2、3、4、5 - 我希望为每个值分配一个变量:a = 1、b = 2、... f = 5。 @ozsh83 【参考方案1】:如果您想存储调用FRoll
返回的值,那么您可以执行以下操作:
FairDice fd = new FairDice();
var numbers = new List<int>();
5.Roll(() => numbers.Add(fd.FRoll())); // Append the values to the list as we generate them
var firstNumberRolled = numbers[0]; // Access the values later
Console.WriteLine($"The first number rolled was firstNumberRolled");
【讨论】:
【参考方案2】:将 throw 结果放入数组后,您可以根据需要提取分配变量。
class FairDice
private static int _seed;
private static ThreadLocal<Random> threadLocal = new ThreadLocal<Random>
(() => new Random(Interlocked.Increment(ref _seed)));
static FairDice()
_seed = Environment.TickCount;
private static Random Rng get return threadLocal.Value;
public int Roll()
return Rng.Next(1, 6);
static class RollDice
public static int[] Roll(this int count, FairDice dice)
int[] values = new int[count];
for (int i = 0; i < count; i++)
values[i] = dice.Roll();
return values;
class Program
static void Main(string[] args)
FairDice fd = new FairDice();
int[] values = 5.Roll(fd);
Console.WriteLine(String.Join(",", values.Select(x => x.ToString()).ToArray()));
【讨论】:
它按预期工作,谢谢。但是,我确实很难掌握您制作的 FairDice 课程。你愿意详细说明吗?【参考方案3】:将此添加到 FairDice(带有“*”的行):
class FairDice
* private int[] returnedValues;
public int FRoll()
Current = rnd.Next(1, 7);
* returnedValues[Current]++;
return Current;
*public void GetreturnedValues()
*
* for (int i = 1; i < 7; i++)
*
* Console.WriteLine("0: 1", i, returnedValues[i]);
*
*
在此之后向您添加d.GetreturnedValues();
Program.cs 将显示不同值被抛出的次数。
【讨论】:
以上是关于C#:如何将随机 int 值分配给变量?的主要内容,如果未能解决你的问题,请参考以下文章
将表示 SQL 查询的记录数(计数)的值分配给 C# 中的变量