Если степень случайности / предсказуемости не важна, да, есть другие способы генерировать последовательность из 1 и 0.
Например, мы могли бы эмулировать псевдослучайную генерацию 0 и 1, извлекая микросекунды из системных часов через определенные промежутки времени, предполагая, что значение микросекунд будет четным или нечетным довольно случайным образом, если мы разнесем каждый вызовнемного времени.
Например, что-то вроде этого:
SELECT n.i
FROM ( SELECT MICROSECOND(SYSDATE(6)) MOD 2 AS i, SLEEP(0.000001)
UNION ALL SELECT MICROSECOND(SYSDATE(6)) MOD 2, SLEEP(0.000001)
UNION ALL SELECT MICROSECOND(SYSDATE(6)) MOD 2, SLEEP(0.000001)
UNION ALL SELECT MICROSECOND(SYSDATE(6)) MOD 2, SLEEP(0.000001)
UNION ALL SELECT MICROSECOND(SYSDATE(6)) MOD 2, SLEEP(0.000001)
UNION ALL SELECT MICROSECOND(SYSDATE(6)) MOD 2, SLEEP(0.000001)
) n
возвращает:
i
----
0
0
1
1
0
1
ПРИМЕЧАНИЕ: этот ответ "да", естьдругие способы генерирования 1 и 0. Этот ответ не предполагает, что демонстрация здесь - это лучший способ. Это просто пример запроса, который генерирует серию из 1 и 0.
Существуют другие выражения с RAND()
, которые генерируют 0 или 1, например,
ROUND(RAND()*1000,0) MOD 2