Peter Bloomfield'ın yanıtını buradan okuyun: https://arduino.stackexchange.com/a/1482/7727
Ardından aşağıdakileri okuyun:
Herkesin referansı için Arduino'nun WMath.cpp'si burada bulunur.
AVR-Libc'in random () işlevi için belgeler burada.
Burada bağlantılı olarak burada AVR-Libc için kaynak kodu bulunur.
"avr-libc-2.0.0'ı indirdim .tar.bz2.sig 08-Şub-2016 "yazıp çıkardı. Peter'ın dediği gibi, "rasgele" nin kaynak kodu " avr-libc-2.0.0 \ libc \ stdlib \ random.c " içindedir
Sizi güçlükten kurtarmak için, işte, telif hakkı ve lisans beyanıyla birlikte kaynak kodu hemen üstünde.
/ * - * Telif Hakkı (c) 1990, 1993 * The Regents of the University of California. Her hakkı saklıdır. * * Değiştirilerek veya değiştirilmeden kaynak ve ikili biçimlerde yeniden dağıtıma ve kullanıma, aşağıdaki koşulların * karşılanması koşuluyla izin verilir: * 1. Kaynak kodun yeniden dağıtımlarında yukarıdaki telif hakkı * uyarısı, bu koşullar listesi ve aşağıdakiler korunmalıdır sorumluluk reddi. * 2. İkili biçimdeki yeniden dağıtımlar, yukarıdaki telif hakkı * bildirimini, bu koşullar listesini ve aşağıdaki sorumluluk reddini * belgelerde ve / veya dağıtımla birlikte sağlanan diğer malzemelerde yeniden oluşturmalıdır. * 3. Ne Üniversitenin adı ne de katkıda bulunanların adları * önceden özel yazılı izin alınmadan bu yazılımdan * türetilen ürünleri onaylamak veya tanıtmak için kullanılamaz. * * BU YAZILIM REGENTS VE KATKIDA BULUNANLAR TARAFINDAN `` OLDUĞU GİBİ '' SAĞLANMAKTADIR VE * TİCARİ ELVERİŞLİLİK VE BELİRLİ BİR AMACA UYGUNLUK * DAHİL ANCAK BUNLARLA SINIRLI OLMAMAK ÜZERE HERHANGİ AÇIK VEYA ZIMNİ GARANTİLER REDDEDİLMEKTEDİR. HİÇBİR DURUMDA REFERANSLAR VEYA KATKI SAĞLAYICILAR, HERHANGİ BİR DOĞRUDAN, DOLAYLI, ARIZİ, ÖZEL, ÖRNEK VEYA DOLAYLI * HASARLARDAN (SINIRLI OLMAYAN YEDEK MALLARIN TEMİNİ DAHİL)
* VEYA HİZMETLER; KULLANIM, VERİ VEYA KAR KAYBI; VEYA İŞ KESİNTİSİ) * HERHANGİ BİR ŞEKİLDE BU YAZILIMIN KULLANILMASINDAN BİLE, MÜMKÜN OLSA BİLE, SÖZLEŞME, SÖZLEŞME, KISITLIK * SORUMLULUK VEYA TORT (İHMAL VEYA BAŞKA BİR ŞEKİL DAHİL) * BÖYLE HASAR. * * Posix rand_r işlevi Mayıs 1999 Wes Peters <wes@softweyr.com> tarafından eklendi. * * $ Id: random.c 1944 2009-04-01 23: 12: 20Z arcanum $ * // * * Gönderen: statik karakter sccsid [] = "@ (#) rand.c 8.1 (Berkeley) 6/14 / 93 "; * / # include <stdlib.h> # include" bölümadı.h "ATTRIBUTE_CLIB_SECTIONstatic longdo_random (unsigned long * ctx) {/ * * Compute x = (7 ^ 5 * x) mod (2 ^ 31 - 1) * overflow olmadan 31 bit: * (2 ^ 31 - 1) = 127773 * (7 ^ 5) + 2836 * "Rastgele sayı üreteçleri: iyi olanları bulmak zordur", * Park ve Miller, Communications of the ACM, cilt. 31, hayır. 10, * Ekim 1988, s. 1195. * / long hi, lo, x; x = * ctx; / * 0 ile başlatılamaz, bu yüzden başka bir değer kullanın. * / eğer (x == 0) x = 123459876L; hi = x / 127773L; lo = x% 127773L; x = 16807L * lo - 2836L * merhaba; eğer (x < 0) x + = 0x7fffffffL; return ((* ctx = x)% ((unsigned long) RANDOM_MAX + 1));} ATTRIBUTE_CLIB_SECTIONlongrandom_r (unsigned long * ctx) {return do_random (ctx);} static unsigned long next = 1; ATTRIBUTE_CLIB_SECTIONlong_random (&next);} ATTRIBUTE_CLIB_SECTIONvoidsrandom (işaretsiz uzun tohum) {sonraki = tohum;}