C#简易随机双卡牌生成器问题:卡牌重复且显示索引而非内容
解决随机双卡牌生成器的两个问题
先看修正后的完整代码:
string[] cardValues = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "J", "Q", "K" }; string[] cardSuites = { "HEARTS", "CLUBS", "DIAMONDS", "SPADES" }; Random rand = new Random(); // 为第一张牌生成独立的随机索引 int val1 = rand.Next(cardValues.Length); int suite1 = rand.Next(cardSuites.Length); // 为第二张牌生成独立的随机索引 int val2 = rand.Next(cardValues.Length); int suite2 = rand.Next(cardSuites.Length); Console.WriteLine("2 random cards "); // 通过索引获取数组中的实际卡牌值与花色 Console.WriteLine("Card1 -> {0} {1}", cardValues[val1], cardSuites[suite1]); Console.WriteLine("Card2 -> {0} {1}", cardValues[val2], cardSuites[suite2]);
问题1:输出数组索引而非卡牌实际值
你之前直接输出的randomValues和randomSuites是数组元素的位置编号,并非卡牌的实际内容。要显示字母和花色全称,需要用索引去访问对应数组的元素,即cardValues[索引]和cardSuites[索引],这样才能拿到数组中存储的字符串内容。
问题2:两张卡牌完全相同
你只生成了一组随机索引,两张牌共用了同一组值。要生成不同的随机卡牌,必须为每张牌单独调用rand.Next()生成独立的索引,让两张牌的数值和花色各自随机。
内容的提问来源于stack exchange,提问作者R_U_H
相关产品推荐
相关产品推荐

