用另一个数组的值随机分配数组值
Posted
技术标签:
【中文标题】用另一个数组的值随机分配数组值【英文标题】:Randomly assign array value with another array's value 【发布时间】:2019-04-25 15:38:30 【问题描述】:如何将一组数组值分配给另一个数组的值?两者都有 26 个值。
我正在模拟一个交易或不交易游戏,其中用户从指定列表中选择一个案例。现在,在每次运行控制台应用程序时,我希望每个案例的每个现金奖励都有一个随机分配(为了公平起见)。我的代码如下:
int[] cashPrizeArray = new int[] 0, 1, 2, 5, 10, 20, 50, 100, 150, 200, 250, 500, 750, 1000, 2000, 3000, 4000, 5000, 10000, 15000, 20000, 25000, 50000, 75000, 100000, 200000 ;
string[] caseArray = new string[] "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26" ;
Console.WriteLine("Deal or Not!");
Console.Write("Choose a case: 1-26: ");
string userCase = Console.ReadLine();
if (!caseArray.Contains(userCase))
Console.WriteLine("\nUnexpected input text.\nThis application will now be terminated.\nPress ENTER to continue...");
Console.ReadLine();
Environment.Exit(0);
else
Console.WriteLine("You chose case " + userCase);
Console.ReadLine();
当用户选择它们时,我需要一一引用这些案例,然后在最初打开时将它们从数组中的调用中删除。
【问题讨论】:
你有问题吗? 在这里搜索shuffle c#
几十个答案,等你来发现
@Enigmativity 如何将一组数组值分配给另一个数组的值?两者都有 26 个值。
@kzone95:我不清楚“用另一个数组的值分配一组数组值”是什么意思。到目前为止,您的程序有两个数组并接受来自用户的一个输入值。该代码中有什么不起作用吗?如果您的代码正在运行并且您希望继续进行下一步,那么该步骤是什么?在逻辑上将问题分解为小而具体的部分。你接下来要尝试哪一块?你试过什么?
在你的类中定义一个字段private static Random _rnd = new Random();
,然后在你定义cashPrizeArray
之后就行了:cashPrizeArray = cashPrizeArray.OrderBy(x => _rnd.Next()).ToArray();
。
【参考方案1】:
如果您制作一个二维列表,第一个维度显示什么情况,第二个维度显示该金额的金额。然后你检查你是否已经有 使用了该特定案例,如果是,则再试一次(使用 goto,但您可以更改),或者如果尚未使用,则将该案例与第二维中的钱一起添加到列表中。
代码:
public static List<List<string>> PairedCases = new List<List<string>>();
public static void addsubstrin(string money, string casenom)
List<string> sublist = new List<string>();
sublist.Add(money);
sublist.Add(casenom);
PairedCases.Add(sublist);
static void Main(string[] args)
int[] cashPrizeArray = new int[] 0, 1, 2, 5, 10, 20, 50, 100, 150, 200, 250, 500, 750, 1000, 2000, 3000, 4000, 5000, 10000, 15000, 20000, 25000, 50000, 75000, 100000, 200000 ;
string[] caseArray = new string[] "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26" ;
Random rnd = new Random();
foreach (int inte in cashPrizeArray)
Restart:;
int putincase = rnd.Next(1, 27);
bool found = false;
//here we chack if its already in the list
for (int a = 0; a < PairedCases.Count(); a++)
if (putincase.ToString() == PairedCases[a][1])
found = true;
if(found == false)
addsubstrin(inte.ToString(), putincase.ToString());
else
goto Restart;
for (int i = 0; i < PairedCases.Count(); i++)
Console.WriteLine(PairedCases[i][0] + " " + PairedCases[i][1]);
Console.ReadLine();
【讨论】:
以上是关于用另一个数组的值随机分配数组值的主要内容,如果未能解决你的问题,请参考以下文章
两个 php 数组 - 用另一个数组的值顺序对一个数组进行排序