这个问题在这里已经有答案了:
创建无重复的随机数(18个答案)
三天前关门了。
我正在做一个程序,将模拟21点的简化版本。每当有人抽一张牌时,它就不能再用了。到目前为止,我已经学习了math.random()函数,所以我确信我应该在这个赋值中使用它。
我的第一次尝试是创建一个52张布尔数组(一张牌组中有52张牌)并使用以下代码行: int playerCard = (int) (Math.random() * 52);
. 我将手动检查所有52种可能性,并将它们分配给数组中的一个索引。我意识到这将花费太多的时间和精力,特别是因为我必须在这项任务中多次这样做。如果每个人每次都想生成不重复的随机数,那就没有效率了。
注:如有可能,请尽量不要使用 import java.util.Random;
,但扫描仪正常。另外,如果这改变了什么,我将把它放在for循环中。
2条答案
按热度按时间z9smfwbn1#
在列表中保留可用的卡(或卡索引)。然后移除随机卡片(或索引),如下所示:
nvbavucw2#
一个解决方案是创建一个
boolean[]
大小为52的,记录卡是否被调用。例如:然后,无论何时生成新卡:
现在你有了
playerCard
工作,这是保证一个新的卡在游戏中。重新排列牌组(将所有牌放回牌组):