我需要在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}
由于我的伪代码是基于java的
,因此我在clojure中的表达非常有限答案 0 :(得分:0)
答案 1 :(得分:0)
如果你想随机做出决定,你可以在if语句中使用其中一个rand runctions:
UPDATE_USERNAME
还有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
答案 2 :(得分:0)
(defn factor-5 [x]
(if (and (number? x) (zero? (rem x 1)))
(if (zero? (rand-int 5))
"Boom"
x)))
byte
,short
,int
,.... (rand-int 5)
从0, 1, ... 4
随机选择。