2013-02-17 4 views
2

의 요소 스크램블링 위해 나는 데이터 저장소에서 모든 질문을 얻을 코드가 있습니다. 나는 클라이언트에서가 아니라 이동 (서버)에서 질문 슬라이스의 재정렬을하고 싶습니다. 어떻게 슬라이스의 순서를 뒤섞을 수 있습니까? ramdom number를 생성 할 생각은 있지만 쉬운 방법이 있다고 생각합니다. 모두에게 많은 감사를드립니다!재정렬 또는 슬라이스 또는지도 GAE 이동

+0

[데이터 스토어에서 무언가를 얻는 방법 (AppEngine)?] (http://stackoverflow.com/questions/3450926/how-to-get-something-random-in-datastore-appengine) –

답변

1

아마 당신은 데이터 저장소 키와 값에 대한 패키지를 math/rand

randomQuestion:=questions[rand.Intn(len(questions)] 
2
코드에서

, keysquestions 동기화 슬라이스를 사용할 수 있습니다. 따라서 임의의 슬라이스 인덱스 시퀀스를 사용하여 questions에 액세스하십시오.

2 <nil> <nil> 
3 <nil> <nil> 
4 <nil> <nil> 
0 <nil> <nil> 
1 <nil> <nil> 

코드는 rand.Perm 기능을 사용하기 위해 개정되었습니다 예를 들어,

package main 

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

type Key struct{} 
type Value interface{} 

func main() { 
    keys := make([]*Key, 5) 
    values := make([]Value, len(keys)) 
    rand.Seed(time.Now().Unix()) 
    for _, r := range rand.Perm(len(keys)) { 
     k := keys[r] 
     v := values[r] 
     fmt.Println(r, k, v) 
    } 
} 

출력, 무작위로 모든 키와 값 조각을 선택합니다.

+0

안녕하세요. 피터 SO, 나는 이것을 시도 할 것이다! 고마워요! – sagit

+1

참고 [rand.Perm] (http://golang.org/pkg/math/rand/#Rand.Perm) – Sonia

+0

@ 소니아 : 좋은 제안입니다. 끝난. – peterSO

관련 문제