Arduino સાથે રેન્ડમ નંબરો જનરેટ કરવા: તકનીકો અને ઉદાહરણો

  • Arduino સ્યુડો-રેન્ડમ નંબરો જનરેટ કરે છે, સાચા રેન્ડમ નંબરો નહીં.
  • રેન્ડમસીડ અને વેરિયેબલ સીડનો ઉપયોગ પુનરાવર્તિત સિક્વન્સને ટાળવા માટે ચાવીરૂપ છે.
  • millis() અને analogRead() ફંક્શન બીજને અલગ કરીને રેન્ડમનેસનું અનુકરણ કરી શકે છે.

arduino રેન્ડમ નંબરો

Arduino પ્રોજેક્ટ્સ સાથે કામ કરતી વખતે, રેન્ડમ નંબરો જનરેટ કરવાની જરૂરિયાતનો સામનો કરવો સામાન્ય છે. કદાચ તમે કોઈ રમત, એક ઇન્ટરેક્ટિવ ઉપકરણ બનાવી રહ્યાં છો અથવા ફક્ત એવી ઇવેન્ટ્સની જરૂર છે જે અનુમાનિત પેટર્નને અનુસરતી નથી. પરંતુ શું Arduino દ્વારા જનરેટ થયેલ સંખ્યાઓ ખરેખર સંપૂર્ણપણે રેન્ડમ છે? ટૂંકો જવાબ ના છે, અને તેથી સંખ્યાઓનો ખ્યાલ સમજવાની જરૂરિયાત ઊભી થાય છે સ્યુડોરેન્ડમ અને તેનો અસરકારક રીતે અમલ કેવી રીતે કરવો.

આ લેખમાં, અમે તમને Arduino માં રેન્ડમ નંબરો કેવી રીતે જનરેટ કરવા, ફંક્શનનો ઉપયોગ કેવી રીતે કરવો તે શીખવીશું. રેન્ડમ y રેન્ડમબીજ, અને શા માટે આ અમારી સંખ્યા સિક્વન્સ શક્ય તેટલી રેન્ડમ છે તેની ખાતરી કરવા માટે ચાવીરૂપ છે. તમે તે જોશો, જો કે જનરેટ થયેલ નંબરો નથી સંપૂર્ણપણે રેન્ડમ, અમે Arduino જે બીજનો ઉપયોગ કરે છે તેની યોગ્ય રીતે હેરફેર કરીને રેન્ડમનેસની ઘણી ઊંચી ડિગ્રી હાંસલ કરી શકીએ છીએ.

Arduino રેન્ડમ નંબરો કેવી રીતે જનરેટ કરે છે?

સૈદ્ધાંતિક રીતે, Arduino જેવું માઇક્રોકન્ટ્રોલર સાચા રેન્ડમ નંબરો જનરેટ કરવામાં સક્ષમ નથી, કારણ કે તે અનુમાનિત અને ચોક્કસ થવા માટે રચાયેલ ઉપકરણ છે. Arduino જે કરે છે તે સંખ્યાઓનો ક્રમ જનરેટ કરવા માટે બીજ (બેઝ નંબર) સાથે ગાણિતિક ગણતરીઓ કરે છે. સ્યુડોરેન્ડમ. આનો અર્થ એ છે કે, સમાન બીજમાંથી, તમે હંમેશા સંખ્યાઓનો સમાન ક્રમ મેળવશો.

સંખ્યાઓને ઘણી વખત પુનરાવર્તિત થતી અટકાવવા માટે, તમે કાર્ય સાથે બીજને બદલી શકો છો રેન્ડમસીડ(). આ તમને સંખ્યાઓનો ક્રમ જનરેટ કરવા માટે પ્રારંભિક બિંદુ બદલવાની મંજૂરી આપે છે. અણધારી બીજ મેળવવા માટેની કેટલીક ચતુર તકનીકો સાથે આ સાધનનો ઉપયોગ કરીને, જેમ કે અનકનેક્ટેડ એનાલોગ પિન વાંચવા અથવા પ્રોગ્રામ એક્ઝેક્યુશન સમયને માપવા, અમે કોડના દરેક રન સાથે બદલાતા નંબરો મેળવી શકીએ છીએ.

રેન્ડમ ફંક્શનનો ઉપયોગ કરીને

Arduino અમને ફંક્શનને શરૂ કરવાની બે મૂળભૂત રીતો પ્રદાન કરે છે રેન્ડમ: એક 0 અને મહત્તમ સંખ્યા (મહત્તમ – 1) ની વચ્ચે રેન્ડમ નંબર જનરેટ કરવા માટે, અને બીજો ન્યૂનતમ મૂલ્ય અને મહત્તમ મૂલ્ય (ન્યૂનતમ અને મહત્તમ) વચ્ચે રેન્ડમ નંબર જનરેટ કરવા માટે.

મૂળભૂત વાક્યરચના નીચે મુજબ છે:

  • રેન્ડમ (મહત્તમ); 0 અને વચ્ચેની સંખ્યા જનરેટ કરે છે મહત્તમ - 1.
  • રેન્ડમ (મિનિટ, મહત્તમ); વચ્ચે સંખ્યા જનરેટ કરે છે મીન y મહત્તમ - 1.

ઉદાહરણ તરીકે, જો આપણે કૉલ કરીએ રેન્ડમ(250), આપણે 0 અને 249 ની વચ્ચેનો નંબર મેળવીશું. તેવી જ રીતે, જો આપણે એક્ઝિક્યુટ કરીશું રેન્ડમ(100,200), આપણને 100 અને 199 ની વચ્ચે રેન્ડમ નંબર મળશે.

રેન્ડમસીડ ફંક્શનનું મહત્વ

આપણે પહેલેથી જ ઉલ્લેખ કર્યો છે તેમ, પ્રોગ્રામના દરેક એક્ઝિક્યુશનમાં Arduino ને હંમેશા નંબરોનો સમાન ક્રમ જનરેટ કરતા અટકાવવા માટે, આપણે એ સુનિશ્ચિત કરવું જોઈએ કે આપણે જે બીજનો ઉપયોગ કરીએ છીએ તેમાં ફેરફાર કરવો જોઈએ. રેન્ડમસીડ(). જ્યારે પણ કોડ એક્ઝિક્યુટ થાય ત્યારે અણધારી બીજ પસંદ કરવાની યુક્તિ છે.

રેન્ડમ સીડ જનરેટ કરવાની સૌથી સામાન્ય રીતોમાંની એક અનકનેક્ટેડ એનાલોગ પિન વાંચવી છે. આ કિસ્સામાં, તે પિન અણધારી રીતે વર્તે છે, વિદ્યુત અવાજને પસંદ કરે છે, જે ખાતરી આપે છે કે મૂલ્ય વાંચન સતત બદલાશે. બીજ નીચે પ્રમાણે સ્થાપિત કરી શકાય છે:

રેન્ડમસીડ(એનાલોગરીડ(0));

વૈકલ્પિક રીતે, આપણે ફંક્શનનો ઉપયોગ કરી શકીએ છીએ મિલિસ () પ્રોગ્રામ શરૂ થયો ત્યારથી વીતી ગયેલો સમય મેળવવા માટે અને તેનો બીજ તરીકે ઉપયોગ કરો. આ ખાસ કરીને ઇન્ટરેક્ટિવ પ્રોજેક્ટ્સમાં ઉપયોગી છે જ્યાં વપરાશકર્તા સમયસર અલગ-અલગ બિંદુઓ પર એક બટન દબાવી શકે છે, જે સંખ્યાના દરેક ક્રમ માટે અલગ શરૂઆત જનરેટ કરશે.

ઉદાહરણ તરીકે, આપણે ઉપયોગ કરી શકીએ છીએ રેન્ડમસીડ(મિલિસ()); જેથી બીજ અમલના સમયના આધારે બદલાય.

વ્યવહારુ ઉદાહરણ: ઇલેક્ટ્રોનિક ડાઇસ

Arduino IDE, ડેટા પ્રકારો, પ્રોગ્રામિંગ

Arduino માં રેન્ડમ નંબરોનો ઉપયોગ કરવાની ક્લાસિક એપ્લિકેશન એ ઇલેક્ટ્રોનિક ડાઇસની રચના છે. આ કિસ્સામાં, દરેક વખતે જ્યારે આપણે બટન દબાવીએ છીએ, ત્યારે 1 અને 6 ની વચ્ચેનો નંબર જનરેટ થાય છે, અને LED એ સંબંધિત ડાઇના ચહેરાને રજૂ કરવા માટે પ્રકાશિત થાય છે.

આ કોડની રચના કેવી રીતે કરી શકાય તેનું ઉદાહરણ છે:

પુશબટન = 8; // બટન પિન
randomNum = રેન્ડમ(1, 7); // 1 અને 6 ની વચ્ચે રેન્ડમ નંબર બનાવો

જ્યારે તમે બટન દબાવો છો, ત્યારે Arduino રેન્ડમ નંબર જનરેટ કરે છે અને 1,5 સેકન્ડ માટે અનુરૂપ LED ને આપમેળે સક્રિય કરે છે જેથી વપરાશકર્તા અંતિમ પરિણામ જોઈ શકે. થોડા સમય પછી, જ્યાં સુધી બટન ફરીથી દબાવવામાં ન આવે ત્યાં સુધી એલઈડી બંધ થઈ જાય છે.

સુધારેલ સ્યુડોરેન્ડમ નંબરો બનાવો

અવ્યવસ્થિતતાને વધુ સુધારવા માટે, કેટલાક વપરાશકર્તાઓ રેન્ડમ અવાજના પ્રથમ થોડા બિટ્સ પર ધ્યાન કેન્દ્રિત કરવાનું પસંદ કરે છે જે એનાલોગ પિન પસંદ કરી શકે છે. આ એટલા માટે છે કારણ કે પ્રથમ બિટ્સમાં મોટી માત્રામાં પરિવર્તનશીલતા હોય છે, જેનો ઉપયોગ એવા પ્રોજેક્ટ્સમાં થઈ શકે છે કે જેને વધુ રેન્ડમનેસની જરૂર હોય. આ કરવા માટેની એક રસપ્રદ રીત એ છે કે બીટવાઇઝ ઓપરેશનનો ઉપયોગ કરવો:

રેન્ડમસીડ(એનાલોગરીડ(A0) અને 3);

આ પદ્ધતિ એનાલોગ પિન A0 દ્વારા કેપ્ચર કરાયેલા અવાજના પ્રથમ બિટ્સને બહાર કાઢવાની મંજૂરી આપે છે, જે જનરેટ થયેલ સંખ્યાઓની રેન્ડમનેસને સુધારે છે. Arduino 4.294.967.295 જેટલા વિવિધ સ્યુડો-રેન્ડમ નંબરો જનરેટ કરવાની ક્ષમતા ધરાવે છે, જે મોટાભાગના હોમ પ્રોજેક્ટ્સ માટે પર્યાપ્ત કરતાં વધુ છે.

છેલ્લે, એકવાર તમે બીજ અને શ્રેણીને યોગ્ય રીતે સેટ કરી લો તે પછી, તમે Arduino દ્વારા જનરેટ કરાયેલ સંખ્યામાં વધુ પરિવર્તનશીલતાનો આનંદ માણી શકો છો, જે રમતો, ઇન્ટરેક્ટિવ સિસ્ટમ્સ અને સિમ્યુલેશન જેવા વિવિધ પ્રોજેક્ટ્સ માટે આદર્શ છે. ઉદાહરણ તરીકે:

void setup() {
  Serial.begin(9600); // Inicializamos la comunicación serial
  randomSeed(analogRead(0)); // Semilla para generar números más aleatorios
}

void loop() {
  int numeroAleatorio = random(1, 11); // Genera un número aleatorio entre 1 y 10
  Serial.println(numeroAleatorio);
  delay(1000); // Esperamos 1 segundo
}

ભૂલશો નહીં કે Arduino ખરેખર રેન્ડમ નંબરો જનરેટ કરવામાં સક્ષમ ન હોવા છતાં, અહીં દર્શાવેલ તકનીકો લાગુ કરવાથી પરિણામોમાં નોંધપાત્ર સુધારો થશે અને મોટાભાગના કિસ્સાઓમાં તમને રેન્ડમનેસનું અનુકરણ કરવાની મંજૂરી મળશે.


ટિપ્પણી કરવા માટે સૌ પ્રથમ બનો

તમારી ટિપ્પણી મૂકો

તમારું ઇમેઇલ સરનામું પ્રકાશિત કરવામાં આવશે નહીં. આવશ્યક ક્ષેત્રો સાથે ચિહ્નિત થયેલ છે *

*

*

  1. ડેટા માટે જવાબદાર: મિગ્યુએલ gelંજેલ ગેટóન
  2. ડેટાનો હેતુ: નિયંત્રણ સ્પામ, ટિપ્પણી સંચાલન.
  3. કાયદો: તમારી સંમતિ
  4. ડેટાની વાતચીત: કાયદાકીય જવાબદારી સિવાય ડેટા તૃતીય પક્ષને આપવામાં આવશે નહીં.
  5. ડેટા સ્ટોરેજ: cસેન્ટસ નેટવર્ક્સ (ઇયુ) દ્વારા હોસ્ટ કરેલો ડેટાબેઝ
  6. અધિકાર: કોઈપણ સમયે તમે તમારી માહિતીને મર્યાદિત, પુન recoverપ્રાપ્ત અને કા deleteી શકો છો.