gpt4 book ai didi

c# - 在棋盘上随机放置 20 颗棋子的最佳方法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:31:32 26 4
gpt4 key购买 nike

我必须解决这个问题的一个想法是构建一个大小为 8x8 的缓冲区,用指向我的跳棋(全部 20 个)的指针填充它,其余的保留 0(空),然后运行洗牌算法在缓冲区上,仅此而已(只需将其作为 8x8 数组读取即可)

  1. 我想知道是否有更好的方法来做到这一点。
  2. 我需要用 C# 编写,但我的提案不会按照我描述的方式工作

有人吗?

最佳答案

借用 Borzio 的想法,当您接近第 20 个棋子时,有三分之一的机会您必须重新生成随机数并重试。如果有 20 件,您可能仍然安全,但如果您有 40 件,则机会比二分之一的几率要好,您可能需要等待一段时间。

  1. 构建棋盘数组,全部为空。
  2. 将对每个方 block 的引用复制到一个列表 (emptySquareList)。
  3. 为您要添加的每个片段循环:
    1. 生成一个介于 0emptySquareList.Length-1 之间的随机数。
    2. 把棋子放在那个方格里
    3. emptySquareList 中删除正方形。

这样,您始终会维护一个 方 block 列表,并从中进行选择。请注意,您的板数组中的索引数组同样有效,而且可能更快 (Enumerable.Range(0,64))。

我鼓励您尝试使用随机检查算法以及这个算法;看看哪个更有效率。

关于c# - 在棋盘上随机放置 20 颗棋子的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/423135/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com