사용자가 루프 또는 메서드 내에서 많은 System.Random()
을 인스턴스화하여 동일한 무작위 항목을 많이 생성하는 다른 질문을 검색했습니다. 시계. 하지만 여기서는 하나의 인스턴스가 System.Random()
이지만 여러 개의 난수 목록을 생성하려고 할 때 모두 동일합니다. F # System.Random()을 사용하여 임의의 숫자 목록 가져 오기 동일한 목록 제공
module Scripts =
let rnd = System.Random()
let getRandom36 =
let rec generate (l : list<int>) =
match l.Length with
|8 -> l
|_ -> let number = rnd.Next 38
if(List.exists(fun elem -> elem=number) l) then generate l else generate (number::l)
List.sort(generate List.empty)
let myseq = Seq.init 4 (fun _ -> getRandom36)
중요한 부분
는getRandom36
작품 내부의 코드는, 내가 다른 방식으로 작동하도록 함부로 변경되었습니다하지만
myseq;;
를 호출 할 때 같은 모양리스트가 계속 방법을 정말하지 않습니다.
myseq;;
val it : seq<int list> =
seq
[[2; 8; 10; 11; 18; 21; 22; 35]; [2; 8; 10; 11; 18; 21; 22; 35];
[2; 8; 10; 11; 18; 21; 22; 35]; [2; 8; 10; 11; 18; 21; 22; 35]; ...]
왜 그런가? 각 반복마다 rnd
의 새 인스턴스가 작성되지 않았기 때문에 매번 rnd.Next
이 달라야합니다.
rnd.Next은 38는 0과 38 사이의 난수를 얻는 것입니다 :-) –
예, 모바일에서 이것을 읽지 않아야합니다. – s952163
재귀가되고 목록이 필요합니까? – s952163