在Prolog中生成5位数的随机数

在Prolog中生成5位数的随机数,prolog,Prolog,我想使用assert/1和retract/1生成一个5位数的随机数。我已经有了下面的代码,但我不知道如何生成一个5位数的数字 draw :- % length(X, 5), random_between(0, 99999, X), assert(rnumber(X)), write(X). 谢谢大家! 您可以只做5次随机谓词,然后将其放入列表中。 大概是这样的: code(X):- random(0,9,Elem1), random(0,9,El

我想使用assert/1和retract/1生成一个5位数的随机数。我已经有了下面的代码,但我不知道如何生成一个5位数的数字

    draw :-
   % length(X, 5),
   random_between(0, 99999, X),
   assert(rnumber(X)),
   write(X).

谢谢大家!

您可以只做5次随机谓词,然后将其放入列表中。 大概是这样的:

code(X):-
    random(0,9,Elem1),
    random(0,9,Elem2),
    random(0,9,Elem3),
    random(0,9,Elem4),
    random(0,9,Elem5),
    X = [Elem1, Elem2, Elem3, Elem4, Elem5],
    retractall(rnummer(_)),
      asserta(rnummer(X).

然后,您可以使用例如
write(Elem1)、write(Elem2)、
…等将列表转换为字符串您可以只执行随机谓词5次,然后将其放入列表中。 大概是这样的:

code(X):-
    random(0,9,Elem1),
    random(0,9,Elem2),
    random(0,9,Elem3),
    random(0,9,Elem4),
    random(0,9,Elem5),
    X = [Elem1, Elem2, Elem3, Elem4, Elem5],
    retractall(rnummer(_)),
      asserta(rnummer(X).

然后,您可以使用例如
write(Elem1)、write(Elem2)、
…等将列表转换为字符串。

length(X,5)、maplist(random_)介于(0,9),X之间。
length/2
希望其第一个参数是列表
random_-between/3
要求其最后一个参数为数字。您应该仔细阅读这些谓词的文档。如果数字必须是5位数字,为什么不在(10000、99999、X)之间随机选择?或者你希望前导0是可以接受的?@Lowerer,我想他希望前导0是可以接受的,否则就很琐碎了。。。(他已经在第一个参数0中使用了
between/2
,因此这可能意味着他只希望0为00000)。@coder如果需要前导0,然后,它从一个简单的解决方案变为另一个解决方案:在这一点上,这只是一个输出格式问题,因为前导0是一个数字格式问题。如果要用前导0写出数字,请使用格式化的输出,例如
length(X,5),maplist(random_-between(0,9),X).
length/2
希望它的第一个参数是一个列表
random_-between/3
要求其最后一个参数为数字。您应该仔细阅读这些谓词的文档。如果数字必须是5位数字,为什么不在(10000、99999、X)之间随机选择?或者你希望前导0是可以接受的?@Lowerer,我想他希望前导0是可以接受的,否则就很琐碎了。。。(他已经在第一个参数0中使用了
between/2
,因此这可能意味着他只希望0为00000)。@coder如果需要前导0,然后,它会从一个简单的解决方案变为另一个解决方案:在这一点上,这只是一个输出格式问题,因为前导0是一个数字格式问题。如果要用前导0写出数字,请使用格式化输出,例如