如何在Clojure的20%时间内用字符串替换整数

如何在Clojure的20%时间内用字符串替换整数,clojure,integer,lisp,Clojure,Integer,Lisp,我需要在clojure中用字符串替换一个整数,但只替换输出整数的20% (defn factor5 [x] (if (= (mod x 3) (mod x 5) 0) "BuzzFizz" (if (= (mod x 5) 0) "buzz" (if (= (mod x 3) 0) "fizz" x)))) 这里我有一个fizzbuzz程序,如果数字是3的倍数,它会打印出“fizz”,如果是5的倍数,它会打印出“buzz”,如果是两者的倍数,则会打印出“BuzzFizz”。如果整数

我需要在clojure中用字符串替换一个整数,但只替换输出整数的20%

(defn factor5 [x]
  (if (= (mod x 3) (mod x 5) 0) "BuzzFizz"
  (if (= (mod x 5) 0) "buzz"
  (if (= (mod x 3) 0) "fizz" x))))
这里我有一个fizzbuzz程序,如果数字是3的倍数,它会打印出“fizz”,如果是5的倍数,它会打印出“buzz”,如果是两者的倍数,则会打印出“BuzzFizz”。如果整数不是上述两个数的乘积,则打印该整数。我需要的是打印“Boom”而不是整数,但只打印20%的整数

一些伪代码

 if(x == int){
   print out Boom instead of x only for 20% }
   else{
   print out x}
我在clojure方面的经验非常有限,因为我的伪代码是基于java的

请参阅完整的函数列表

您需要的是
rand
,以及类似以下的测试:

(if (< (rand) 0.2) ....)
(如果(<(兰德)0.2)…)
有关函数的全面列表,请参阅

您需要的是
rand
,以及类似以下的测试:

(if (< (rand) 0.2) ....)
(如果(<(兰德)0.2)…)

如果你想随机做出决定,你可以在if语句中使用一个rand语句,如下所示:

user> (defn x20% [x]
        (if (rand-nth [true false false false false])
          "Boom"
          x))
#'user/x20%
user> (x20% 5)
5
user> (x20% 5)
5
user> (x20% 5)
"Boom"
user> (x20% 5)
5
还有
rand
rand int
。您所使用的功能在某种程度上取决于您的风格和具体功能:

user> (> 2 (rand-int 10))
true
user> (> 2 (rand-int 10))
true
user> (> 2 (rand-int 10))
false
user> (> 0.2 (rand))
true
user> (> 0.2 (rand))

如果您想随机做出决定,可以在if语句中使用一个rand runction,如下所示:

user> (defn x20% [x]
        (if (rand-nth [true false false false false])
          "Boom"
          x))
#'user/x20%
user> (x20% 5)
5
user> (x20% 5)
5
user> (x20% 5)
"Boom"
user> (x20% 5)
5
还有
rand
rand int
。您所使用的功能在某种程度上取决于您的风格和具体功能:

user> (> 2 (rand-int 10))
true
user> (> 2 (rand-int 10))
true
user> (> 2 (rand-int 10))
false
user> (> 0.2 (rand))
true
user> (> 0.2 (rand))
  • 这将返回所需的值,而不是打印它
  • 它测试它的参数是否为数字,如果是,则测试它是否为数字 整数值,可以是
    byte
    short
    int
  • (rand int 5)
    0、1、。。。4
  • 这将返回所需的值,而不是打印它
  • 它测试它的参数是否为数字,如果是,则测试它是否为数字 整数值,可以是
    byte
    short
    int
  • (rand int 5)
    0、1、。。。4

你希望那20%是随机的吗?你希望那20%是随机的吗?我想你的
是的,完全相反,谢谢你让我诚实!我想你的
是的,完全是倒退,谢谢你让我保持诚实!谢谢各位,我没有15岁的声望,所以我不能提高投票率,但非常感谢。谢谢各位,我没有15岁的声望,所以我不能提高投票率,但非常感谢。