2014-08-30 6 views
3

Как получить набор случайных чисел, которые не повторяются в наборе?Go: Получить набор уникальных случайных чисел

Перейти:

for i := 0; i < 10; i++ { 
    v := rand.Intn(100) 
    fmt.Println(v) 
} 

Это дает мне, иногда, два или три из тех же цифр. Я хочу, чтобы все они были разными. Как мне это сделать?

ответ

9

Например,

package main 

import (
    "fmt" 
    "math/rand" 
    "time" 
) 

func main() { 
    rand.Seed(time.Now().UnixNano()) 
    p := rand.Perm(100) 
    for _, r := range p[:10] { 
     fmt.Println(r) 
    } 
} 

Выход:

87 
75 
89 
74 
17 
32 
56 
44 
36 
0 

площадка:

http://play.golang.org/p/KfdCW3zO5K

+0

Великий. Я думал, что мой ответ был ложным. Очевидно нет. – VonC

+0

@VonC: Почему ваш ответ правильный? – peterSO

+0

Becuase ... вы упоминаете ту же функцию семени, что и я? (также упоминается в http://stackoverflow.com/a/8288765/6309) – VonC

Смежные вопросы