【发布时间】:2021-10-06 14:11:54
【问题描述】:
我正在努力学习 elisp。我想使用(random n) 然后
取(random n) 的结果并用它来计算一个新的随机数
直到我们达到 1。
类似这样的:
(random 100)
99
(random 99)
51
(random 51)
24
(random 24)
11
(random 11)
3
(random 3)
2
(random 2)
1
如何将n 的新值分配给(random n)?
(setq n (random n))
不起作用。这给出了一个常数,(random n) 不计算。
你能给我一个提示吗?我意识到这是一个完全的新手问题。谢谢。
编辑
(defun rnd (n)
(setq counter 0)
(let ((ret ()))
(while (< 1 n)
(setq n (random n))
(setq counter (+ counter 1))
(push n ret))
(reverse ret))
)
(format "list: %s \n steps: %s" (rnd 100000) counter)
【问题讨论】:
-
当我在
*scratch*中评估它时,这对我有用。您如何确定n的值? -
我正在尝试做这样的事情:(defun rnd (n) (setq n (random n)) ...)
-
并像这样调用 (rnd 100)
-
您正在分配给函数的参数,这对您传递给函数的任何内容都没有影响。 (你期望
(rnd 100)修改100的值吗?)
标签: emacs variable-assignment elisp