2012-06-06 4 views
1

SQLite 데이터베이스에서 임의의 단어를 가져 오는 것을 기본으로하는 iOS 단어 게임을하고 있습니다.iOS 용 SQLite - RANDOM()이 충분하지 않습니다.

그래서 나는 단어, 한 테이블이, 그래서 같이 X 무작위로 단어를 꺼내 :

SELECT Word FROM (SELECT Word FROM Words ORDER BY RANDOM() LIMIT @limit) ORDER BY LENGTH(Word) 

문제는 내 베타 사용자가 충분히 무작위없는 불평이다. 그것은 같은 단어를 시간과 많은 단어를 전혀 끌어 들이지 않는 것 같습니다.

내가하고있는 것에 대한 대안이 있습니까? SQLite의 RANDOM()이 아마도 최고가 아닐 것입니다. 3000 명이 넘기 때문에 나는 메모리에있는 모든 단어를로드하고 싶지 않습니다.

PS - 내 애플 MonoTouch와 C#으로 구축되어 있지만, 당신이 그들을 주문 어쩌면 때문에 확실

+0

각 20 바이트의 3K 워드는 60 킬로바이트 미만입니다. 그것은 iOS에서도 문자 그대로 아무것도 아닙니다. 비교를 위해, 일부 lolcat의 256x256 그림 하나는 256K 메모리를 사용합니다. 사실, SQLite는 메모리 캐시를 가지고 있습니다 (기본 최대 크기는 약 2MB입니다). – hamstergene

+0

메모리에로드하려고 시도합니다. 우리는 또한이 응용 프로그램과 안드로이드를 지원하므로 오래된 droid 전화가 이것을위한 기억을 가지고 있지 않을지 궁금합니다. 우리는 2.2 이상을 지원합니다. – jonathanpeppers

답변

2

을위한 오브젝티브 C (또는 의사) 답변을 할 수 있습니까? 임의로 정렬 된 단어 목록을 선택한 다음 단어 길이별로 다른 결과를 선택하여 정렬합니다. 두 번째 순서는 무작위 화를 망칠 수 있습니다. 이 부분을 나눠서 게임에서 필요한 단어에 따라 길이를 where 절로 만들거나 길이를 먼저 선택하고 해당 목록을 무작위로 지정 하시겠습니까?

+0

나는 너에게 길을주고 길이 C로 주문을한다. – jonathanpeppers

+0

이 문제가 해결 된 것 같습니다. 중첩 된 셀렉션이 어떻게 깨지는지 확신 할 수 없습니다. – jonathanpeppers

관련 문제