【问题标题】:How do I write a procedure that randomly selects a pair from a list?如何编写一个从列表中随机选择一对的程序?
【发布时间】:2011-01-03 09:06:39
【问题描述】:

我正在创建一个跳棋游戏,我需要一个从对子列表中随机选择一对的程序。

【问题讨论】:

  • 听起来像家庭作业......你试过什么?什么不起作用?您对如何执行此操作有任何想法吗?

标签: list random scheme racket


【解决方案1】:

我知道这个问题被问到已经有一段时间了 但也许它对某个地方的某个人有用。 你也可以这样做:

     (car              ;; "car" picks the first element or the "head" of a list
       (shuffle        ;; well... shuffles
         (yourList)))

【讨论】:

  • 您应该补充一点,您的解决方案是一个高度特定于球拍的解决方案。虽然有人可能会认为 random 是任何 Scheme 实现的一部分(尽管没有标准化),但 shuffle 并非如此。
【解决方案2】:
(define select-random
  (lambda (ls)
    (let ((len (length ls)))         ;; find out how long the list is
      (list-ref ls (random len)))))  ;; pick one from 0 to the end

【讨论】:

    【解决方案3】:

    更简洁的解决方案:

    (define (select-random my-lst)
      (list-ref 
        my-lst 
        (random (length my-lst)))
    )
    
    
    > (select-random '(1 2 3 4))
    3
    

    【讨论】:

      猜你喜欢
      • 2018-01-25
      • 1970-01-01
      • 1970-01-01
      • 2010-09-23
      • 2017-04-26
      • 1970-01-01
      • 2019-02-04
      • 2014-11-21
      相关资源
      最近更新 更多