Je travaille sur un jeu de mot iOS qui est construit à partir d'une base de données SQLite autour de tirer des mots au hasard.SQLite pour iOS - random() pas assez bon
J'ai donc 1 table, mots, je sors X mots au hasard comme ceci:
SELECT Word FROM (SELECT Word FROM Words ORDER BY RANDOM() LIMIT @limit) ORDER BY LENGTH(Word)
Le problème est que mes utilisateurs bêta se sont plaints il ne suffit pas au hasard. Il semble tirer les mêmes mots beaucoup de temps et quelques mots jamais du tout.
Y at-il une alternative à ce que je fais? Je sais que RANDOM() de SQLite n'est probablement pas le meilleur. Je ne veux pas charger tous les mots en mémoire, car il y en a plus de 3 000.
PS - mon application est construite en C# avec MonoTouch, mais je peux prendre des réponses Objective-C (ou même pseudocode) pour que
3K mots de 20 octets chacun prend moins de 60 kilo-octets. C'est littéralement rien pour iOS. A titre de comparaison, une image 256x256 de certains lolcat consomme 256K de mémoire. En fait, SQLite dispose d'un cache mémoire (avec une taille maximale par défaut d'environ 2 Mo) qui a probablement tous été chargés dans la mémoire de toute façon. – hamstergene
Je vais essayer de les charger en mémoire. Nous soutenons également Android avec cette application, donc je me demande si les anciens téléphones droïdes peuvent ne pas avoir la mémoire pour cela. Nous soutenons 2.2 et plus haut. – jonathanpeppers