2016-05-10 22 views
0

Wie man verschiedene Zufallszahlen durch scala erzeugt? und die Zahl sollte so kurz wie möglich sein.Ich möchte eine eindeutige ID zu Label-Daten zu generieren, in der gleichen Zeit sollte die ID kurz genug sein, um die Kosten zu sparen?Wie man verschiedene Zufallszahlen durch scala erzeugt? und die Zahl sollte so kurz wie möglich sein

+0

Teil von dem, was Sie hier http://stackoverflow.com/questions/9094820/how-to-generate-a-list-of-random-numbers/9094879#9094879 – Learner

+0

Dank finden fragen können, aber Entschuldigung, es kann meine Anforderung nicht erfüllen. Ich möchte eine eindeutige Zufallszahl. sowie . val r = new util.Random println (1 bis 30 Karte (_ => r.nextInt (100))). Es wird gedruckt: Vektor (16, 20, 77, 94, 9, 82, 14, 64, 23, 44, 30, 56, 19, 75, 94, 28, 88, 78, 33, 99, 49, 62, 68, 52, 99, 21, 74, 1, 70, 75). es hat die 99 wiederholt. –

+0

"Die ID sollte kurz genug sein, um die Kosten zu sparen" Können Sie mehr über die "Kosten" erfahren? Sie meinen die Kosten für die Generierung einer Zufallszahl? Oder Kosten für die Speicherung der Nummer? – Radian

Antwort

0

Versuchen Sie folgendes:

import util.Random.nextInt 
Stream.continually(nextInt(100)).take(10) 

oder Sie können in der Konsole überprüfen die Zahlen generiert:

import util.Random.nextInt 
val res = Stream.continually(nextInt(100)).take(10) 
res.foreach(println) 
5

Da Ihre Anforderung ist

  1. Zufallszahl

  2. uni que

  3. so kurz wie möglich

Dann denke ich, sollten Sie scala.util.Random.shuffle verwenden erwägen, zB

scala.util.Random.shuffle(1 to 30) 

Above-Code wird eine Vector erzeugen, die eindeutige Zufallszahl enthält (in Bezug auf der Position) von 1 bis 30, z. B. Vector(26, 10, 7, 29, 11, 14, 16, 1, 12, 9, 28, 6, 19, 4, 27, 8, 13, 18, 30, 20, 23, 5, 21, 24, 17, 25, 2, 15, 22, 3).

Im Grunde erfüllt es einfach alles, was Sie brauchen.

Wenn Sie es vorziehen, um das Ergebnis in Set oder List zu erhalten, rufen Sie einfach toSet oder toList Methode tun.

nextInt kann die gleiche Sache erreichen, aber Sie könnten eine Menge Logik und versuchen, Mechanismus für sie zu erreichen.

0

Im Grunde können Sie "Set" verwenden, um eindeutige Zufallszahlen zu generieren.

val r = scala.util.Random 
var temp:Int = 0 
var s:Set[Int] = Set() 

var i:Int = 0 
while(i<n){ 
    temp = r.nextInt(range) //random number will be checked whether it is already in the set or not 
    if(!s.contains(temp)){ //if the random number is not in the set 
     s=s+temp;    //random number is added in the set 
     i+=1 
    } 
    } 
s.toArray      //converts the set into array 
Verwandte Themen