Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# iOS的SQLite-RANDOM()不够好_C#_Objective C_Sqlite_Random_Xamarin.ios - Fatal编程技术网

C# iOS的SQLite-RANDOM()不够好

C# iOS的SQLite-RANDOM()不够好,c#,objective-c,sqlite,random,xamarin.ios,C#,Objective C,Sqlite,Random,Xamarin.ios,我正在开发一个iOS文字游戏,它是围绕着从SQLite数据库中随机抽取单词而构建的 我有一张表格,单词,我随机抽取X个单词,如下所示: SELECT Word FROM (SELECT Word FROM Words ORDER BY RANDOM() LIMIT @limit) ORDER BY LENGTH(Word) 问题是我的测试版用户抱怨它不够随机。它似乎在很多时候都使用相同的词语,而有些词语却从未使用过 除了我正在做的事情,还有别的选择吗?我知道SQLite的RANDOM()可能不

我正在开发一个iOS文字游戏,它是围绕着从SQLite数据库中随机抽取单词而构建的

我有一张表格,单词,我随机抽取X个单词,如下所示:

SELECT Word FROM (SELECT Word FROM Words ORDER BY RANDOM() LIMIT @limit) ORDER BY LENGTH(Word)
问题是我的测试版用户抱怨它不够随机。它似乎在很多时候都使用相同的词语,而有些词语却从未使用过

除了我正在做的事情,还有别的选择吗?我知道SQLite的RANDOM()可能不是最好的。我不想把所有的单词都放在内存里,因为有3000多个单词


PS-我的应用程序是用C#和MonoTouch构建的,但我可以肯定地回答Objective-C(甚至伪代码)

也许是因为你订购了它们?您选择一个随机排序的单词列表,然后按单词长度对结果进行另一次选择和排序。第二次排序可能会打乱你的随机化。我会根据游戏中需要的单词将其拆分,将长度作为where子句,或者先按长度选择并随机化这些列表

3K个20字节的字,每个字不超过60KB。这对iOS来说也算不了什么。为了进行比较,一些lolcat的一张256x256图片占用256K内存。事实上,SQLite有内存缓存(默认最大大小约为2MB),它可能已经将它们全部加载到内存中了。我将尝试将它们加载到内存中。我们也支持Android应用程序,所以我想知道老款droid手机是否没有这个功能。我们支持2.2及更高版本。我将尝试您的产品,并按长度C#进行订购。我想这已经解决了问题。我不确定嵌套的select将如何破坏它。