创建、显示和返回随机数
Creating, Displaying and Returning Random Numbers
我需要分别捕获函数 numerosR 的数量,因为我需要它们
知道主数、次数和所有数的平均值,但我不知道
这是我的代码:
(clear)
(display "Ingrese un Numero entre 10 y 40: ")
(define Numero (read))
; Funcion numerosRamdon genera numeros aleatoreos entre 10 y 150
; agrupados por columnas de 10 numeros
(define (numerosRandom)
(define contador 1)
(define contadorColumnas 1)
(define (ciclo)
(define numerosR (+ (random 141) 10))
(if (and (>= Numero 10)
(<= Numero 40)
(<= contadorColumnas 10))
(if (<= contador Numero)
(begin
(display numerosR)
(display #\space)
(set! contador (+ contador 1))
(set! contadorColumnas (+ contadorColumnas 1))
(ciclo)))
(begin
(newline)
(set! contadorColumnas 1)
(ciclo))))
(ciclo))
(numerosRandom)
此代码重写 numerosRandom
以将随机数的生成与其显示分开。它还将 returns 随机数作为列表。 numerosRandom
开头不变。
(define (numerosRandom)
(define contador 1)
现在circlo
只做一件事。它创建一个随机数列表。现在 circlo
接受一个参数 - 一个用于累积随机数的列表。
(define (circlo accumulator)
(define numerosR (+ (random 141) 10))
(cond
((= contador Numero)
(reverse accumulator))
(else
(set! contador (+ contador 1))
(circlo (cons numerosR accumulator)))))
新的本地函数 print-numerosR
显示随机数。
(define (print-numerosR numeros contadorColumnas)
(cond ((null? numeros) "")
((<= contadorColumnas 10)
(display (car numeros))
(display #\space)
(print-numerosR (cdr numeros)
(+ contadorColumnas 1)))
(else
(newline)
(display (car numeros))
(display #\space)
(print-numerosR (cdr numeros)
(+ contadorColumnas 1)))))
首先生成名为 numerosR
的随机数列表,然后显示,然后作为列表返回。
(define numerosR (circlo '()))
(print-numerosR numerosR 0)
numerosR)
备注
因为随机数列表 numerosR
是 numerosRandom
评估的最后一项,它总是被返回。
通过将 contador
的突变作为附加值传递给 circlo
.
来消除它是一个很好的练习
我需要分别捕获函数 numerosR 的数量,因为我需要它们 知道主数、次数和所有数的平均值,但我不知道
这是我的代码:
(clear)
(display "Ingrese un Numero entre 10 y 40: ")
(define Numero (read))
; Funcion numerosRamdon genera numeros aleatoreos entre 10 y 150
; agrupados por columnas de 10 numeros
(define (numerosRandom)
(define contador 1)
(define contadorColumnas 1)
(define (ciclo)
(define numerosR (+ (random 141) 10))
(if (and (>= Numero 10)
(<= Numero 40)
(<= contadorColumnas 10))
(if (<= contador Numero)
(begin
(display numerosR)
(display #\space)
(set! contador (+ contador 1))
(set! contadorColumnas (+ contadorColumnas 1))
(ciclo)))
(begin
(newline)
(set! contadorColumnas 1)
(ciclo))))
(ciclo))
(numerosRandom)
此代码重写 numerosRandom
以将随机数的生成与其显示分开。它还将 returns 随机数作为列表。 numerosRandom
开头不变。
(define (numerosRandom)
(define contador 1)
现在circlo
只做一件事。它创建一个随机数列表。现在 circlo
接受一个参数 - 一个用于累积随机数的列表。
(define (circlo accumulator)
(define numerosR (+ (random 141) 10))
(cond
((= contador Numero)
(reverse accumulator))
(else
(set! contador (+ contador 1))
(circlo (cons numerosR accumulator)))))
新的本地函数 print-numerosR
显示随机数。
(define (print-numerosR numeros contadorColumnas)
(cond ((null? numeros) "")
((<= contadorColumnas 10)
(display (car numeros))
(display #\space)
(print-numerosR (cdr numeros)
(+ contadorColumnas 1)))
(else
(newline)
(display (car numeros))
(display #\space)
(print-numerosR (cdr numeros)
(+ contadorColumnas 1)))))
首先生成名为 numerosR
的随机数列表,然后显示,然后作为列表返回。
(define numerosR (circlo '()))
(print-numerosR numerosR 0)
numerosR)
备注
因为随机数列表 numerosR
是 numerosRandom
评估的最后一项,它总是被返回。
通过将 contador
的突变作为附加值传递给 circlo
.