В SQLite можете да използвате random()
функция за генериране на псевдослучайно число.
Това е страхотно, но върнатата стойност е между -9223372036854775808 и +9223372036854775807.
Ами ако имате нужда от произволно число между 0 и 10? Или кажете 1 и 100?
За щастие можете да направите това, като комбинирате random()
с abs()
и модулния оператор.
Произволно число между 0 и 10
Можете да използвате следния код, за да генерирате псевдослучайно число между 0 и 10.
SELECT abs(random() % 10);
Ето пример за избор на множество произволни стойности.
SELECT
abs(random() % 10) AS R1,
abs(random() % 10) AS R2,
abs(random() % 10) AS R3;
Резултат:
R1 R2 R3 ---------- ---------- ---------- 2 8 5
Увеличете обхвата
Разбира се, можете да промените стойността на всичко, което искате (ако приемем, че е в рамките на random()
диапазон от възможни стойности).
Ето го отново с увеличен диапазон между 0 и 100.
SELECT
abs(random() % 100) AS R1,
abs(random() % 100) AS R2,
abs(random() % 100) AS R3;
Резултат:
R1 R2 R3 ---------- ---------- ---------- 76 60 85
Произволно число между 1 и 10
Ако не искате нулата да бъде част от възможните резултати, можете да използвате следния метод.
Следният код генерира псевдослучайно число между 1 и 10.
SELECT abs(random()) % (10 - 1) + 1;
Ето пример за избор на множество произволни стойности.
SELECT
abs(random()) % (10 - 1) + 1 AS R1,
abs(random()) % (10 - 1) + 1 AS R2,
abs(random()) % (10 - 1) + 1 AS R3;
Резултат:
R1 R2 R3 ---------- ---------- ---------- 2 1 8