Nie udało mi się szybko znaleźć kodu źródłowego funkcji; zobaczenie tego może pomóc w uzyskaniu lepszej odpowiedzi. To powiedziawszy, wygląda na „nie… ale trochę blisko”.
Z dokumentacji widzę, że próbuje być losowy (i opcjonalnie możesz to zainicjować); ale są dwa zastrzeżenia, które oznaczają, że może nie zawsze być jednolity, gdy oczekujesz, że pierwszy numer znajduje się w dokumentacji:
RAND() is not meant to be a perfect random generator. It is a fast way to generate random numbers on demand that is portable between platforms for the same MySQL version.
tj. kod do niego jest wątpliwy, ponieważ jest prawdziwym generatorem liczb losowych - jest wystarczająco dobry do większości celów, ale nie można mu ufać, jeśli chodzi o użycie, powiedzmy, w szyfrowaniu, i założę się, że nie można mu ufać, że jest tak jednolite, jak można się spodziewać.
Ich twierdzenie, że nie jest doskonały, oznacza, że prawie na pewno nie przejdzie przynajmniej niektórych z tych testów; sposób jest nadal niejasny, ale jeśli nie jest to doskonały RNG, nie zobaczysz idealnie jednolitego rozkładu; Spodziewałbym się luk lub szczytów zakresów, które są bardziej/mniej powszechne.http://www.stat.fsu.edu/pub/diehard/cdrom/pscript/monkey.ps (od tamtej pory wykonano inną pracę, ale to nadal jest kluczowa praca w walidacji RNG).
Mogę się założyć, że stojący za nim kod z pewnością nie spróbuj zagwarantować jednolitą dystrybucję, ponieważ zrobienie tego (śledzenie historii tego, co już się pojawiło) spowodowałoby marnowanie masy pamięci. W każdym razie, jeśli wygenerowałeś już wiele wartości za pomocą idealnego RNG, nic nie gwarantuje, że jeśli twoje dotychczasowe wartości były niskie, następne będą wysokie. Zawsze będzie tak samo losowy.