If you're seeing this message, it means we're having trouble loading external resources on our website.

Si vous avez un filtre web, veuillez vous assurer que les domaines *. kastatic.org et *. kasandbox.org sont autorisés.

Contenu principal

Les nombres aléatoires

Apprenez comment générer des nombre aléatoire en ProcessingJS en utilisant la fonction random(), et testez leurs valeurs avec des instructions conditionnelles if.
Nous avons utilisé les instructions if pour tester des valeurs environnementale, comme la position actuelle du pointeur de la souris, et répondre de façon prévisible.
Et si nous souhaitions que cela soit imprévisible ? Que notre programme agisse différemment à chaque fois qu'il s'éxécute ?
L'aléatoire est notre recours !
On peut générer des nombres aléatoire et utiliser des instructions if et else if, basées sur ces valeurs aléatoires, pour modifier le comportement de notre programme.
Par exemple :
var valeurAleatoire = random(0, 10);
if (valeurAleatoire < 5) {
 text("Un sort !", 200, 200);
} else {
 text("Des bonbons !", 200, 200);
}
Le programme écrit "Un sort !" la moitié du temps, et "Des bonbons !" l'autre moitié du temps.
Comment ça fonctionne :
  • On affecte à la variable valeurAleatoire un nombre aléatoire situé entre 0 et 10. La valeur retournée peut être 0, 0,2, 3,3, 4, 5,5, 6,9, 8, 9, ou 9,99 mais pas 10 pile.
  • L'instruction conditionnelle teste si le nombre récupéré est plus petit que 5 et écrit, dans ce cas, "Un sort !", sinon écrit "Des bonbons !".
Il est parfois plus simple de traiter avec des nombres entiers plutôt que des décimaux, pour tester des valeurs exactes. Voici quelques fonctions convertissant les nombres décimaux en entiers :
  • round() : Arrondit un nombre vers son entier inférieur le plus proche si la décimale est inférieure à .5, et vers son entier supérieur si elle est supérieure ou égale à .5.
  • ceil() : Arrondit toujours à l'entier supérieur le plus proche.
  • floor() : Arrondit toujours à l'entier inférieur le plus proche, en supprimant simplement la partie décimale.
Habituellement on cherche à générer des nombres aléatoires de façon uniforme. Par exemple, lorsqu'on simule le lancer d'une pièce, on attend une chance équiprobable d'obtenir "Pile" et "Face".
Ce code accomplit cet objectif :
var pieceAleatoire = floor(random(0, 2));
if (pieceAleatoire === 0) {
 text("Pile", 200, 200);
} else {
 text("Face", 200, 200);
}
La variable pieceAleatoire sera toujours 0 ou 1, étant donné qu'on appelle floor() sur la valeur retournée par random(0, 2).
Pour donner une idée du fonctionnement, voici le résultat d'un appel à floor() sur différentes valeurs retournées par random(0, 2) :
random(0, 2)floor(resultat)
0,00
0,217…0
0,542…0
0,973…0
1,01
1,332…1
1,589…1
1,999…1
Les valeurs retournées par random() sont aléatoires. Il n'est donc pas nécessaire que le résultat soit aussi équitablement distribué que dans cette table. Si on lance 10 fois le code du lancer de la pièce, on pourrait n'obtenir que des "Pile", ou que des "Face". Cependant, si on le lance un millier de fois en comptabilisant, on verrait apparaître environ 50% de "Pile" et 50% de "Face".
En règle générale, quand l'objectif est d'obtenir une répartition juste et équitable de valeurs entières, il est préférable d'utiliser floor() sur random().
La fonction random() est un excellent moyen d'ajouter un peu de variations à nos programmes. Cependant, utilisez-la soigneusement : choisissez bien l'intervalle dans lequel vous générez les nombres, décidez s'il est nécessaire de les arrondir et testez les valeurs de façon appropriée.
Vous allez avoir la chance de pouvoir essayer tout cela dans le prochain projet !

Vous souhaitez rejoindre la discussion ?

  • blobby green style l'avatar de l’utilisateur SADA GANGUE
    je vous remerciement pbeaucoup pour les arrondis
    (1 vote)
    Default Khan Academy avatar l'avatar de l’utilisateur
  • female robot amelia style l'avatar de l’utilisateur carlo
    j 'aimerais bien voir l'intérieur de la fonction random(). Comment l'algorithme a été implémenté pour pouvoir générer du hasard?
    voir ça où, quelque part?
    (1 vote)
    Default Khan Academy avatar l'avatar de l’utilisateur
  • blobby green style l'avatar de l’utilisateur noah
    i didn't understand
    র্যান্ডম() ফাংশন ব্যবহার করে প্রসেসিংজেএস-এ র্যান্ডম সংখ্যা কীভাবে তৈরি করা যায় তা শিখুন এবং শর্তসাপেক্ষ যদি বিবৃতি দিয়ে তাদের মান পরীক্ষা করুন।
    আমরা পরিবেশগত মান পরীক্ষা করার জন্য নির্দেশাবলী ব্যবহার করেছি if, যেমন মাউস পয়েন্টারের বর্তমান অবস্থান, এবং একটি অনুমানযোগ্য উপায়ে প্রতিক্রিয়া।
    যদি আমরা এটি অনির্দেশ্য হতে চেয়েছিলাম? আমাদের প্রোগ্রাম প্রতিবার চলার সময় ভিন্নভাবে কাজ করে?
    এলোমেলোতা আমাদের অবলম্বন!
    আমরা এলোমেলো সংখ্যা তৈরি করতে পারি এবং নির্দেশাবলী ব্যবহার করতে পারি ifএবং else ifএই র্যান্ডম মানগুলির উপর ভিত্তি করে, আমাদের প্রোগ্রামের আচরণ পরিবর্তন করতে পারি।
    উদাহরণ স্বরূপ :
    var valeurAleatoire = random(0, 10);
    if (valeurAleatoire < 5) {
    text("Un sort !", 200, 200);
    } else {
    text("Des bonbons !", 200, 200);
    }
    প্রোগ্রাম লিখেছে "একটি বানান!" অর্ধেক সময়, এবং "ক্যান্ডি!" সময়ের অন্য অর্ধেক।
    কিভাবে এটা কাজ করে :
    ভেরিয়েবলটিকে valeurAleatoire0 এবং 10 এর মধ্যে একটি এলোমেলো সংখ্যা নির্ধারণ করা হয়েছে। প্রত্যাবর্তিত মানটি 0, 0.2, 3.3, 4, 5.5, 6.9, 8, 9, বা 9.99 হতে পারে তবে 10 পাইল নয়।
    শর্তসাপেক্ষ বিবৃতিটি পরীক্ষা করে যে পুনরুদ্ধার করা সংখ্যাটি 5-এর কম এবং লেখে, এই ক্ষেত্রে, "একটি বানান!", অন্যথায় "ক্যান্ডি!" লিখে।
    কখনও কখনও সঠিক মান পরীক্ষা করার জন্য দশমিকের পরিবর্তে পূর্ণ সংখ্যার সাথে মোকাবিলা করা সহজ। এখানে কিছু ফাংশন রয়েছে যা দশমিক সংখ্যাকে পূর্ণসংখ্যাতে রূপান্তর করে:
    round(): দশমিক .5-এর কম হলে একটি সংখ্যাকে তার নিকটতম পূর্ণ সংখ্যায় এবং .5-এর থেকে বড় বা সমান হলে তার পরবর্তী পূর্ণ সংখ্যায় পূর্ণাঙ্গ করে।
    ceil(): সর্বদা নিকটতম পূর্ণ সংখ্যা পর্যন্ত বৃত্তাকার।
    floor(): সর্বদা নিকটতম পূর্ণসংখ্যাতে বৃত্তাকার করে, কেবল দশমিক অংশটি সরিয়ে।
    সাধারণত আমরা অভিন্ন উপায়ে এলোমেলো সংখ্যা তৈরি করার চেষ্টা করি। উদাহরণস্বরূপ, যখন আমরা একটি মুদ্রার টস অনুকরণ করি, তখন আমরা "হেডস" এবং "হেডস" পাওয়ার সমান সুযোগ আশা করি।
    এই কোডটি এই লক্ষ্য পূরণ করে:
    var pieceAleatoire = floor(random(0, 2));
    if (pieceAleatoire === 0) {
    text("Pile", 200, 200);
    } else {
    text("Face", 200, 200);
    }
    ভেরিয়েবলটি pieceAleatoireসর্বদা 0 বা 1 হবে, যেহেতু আমরা floor()মানের দ্বারা প্রত্যাবর্তিত মানটিকে কল করছি random(0, 2)।
    floor()এটি কীভাবে কাজ করে তার একটি ধারণা দিতে, এখানে বিভিন্ন মানের কলের ফলাফল যা দ্বারা ফেরত দেওয়া হয়েছে random(0, 2):
    random(0, 2) floor(resultat)
    0.0 0
    0.217… 0
    0.542… 0
    0.973… 0
    1.0 1
    1,332… 1
    1,589… 1
    1,999… 1
    দ্বারা প্রত্যাবর্তিত মানগুলি random()এলোমেলো। সুতরাং ফলাফলটি এই টেবিলের মতো সমানভাবে বিতরণ করা আবশ্যক নয়। যদি আমরা কয়েন টস কোড 10 বার নিক্ষেপ করি তবে আমরা শুধুমাত্র "হেডস" বা শুধুমাত্র "হেডস" পেতে পারি। যাইহোক, যদি আমরা গণনার সময় এটি এক হাজার বার নিক্ষেপ করি, তাহলে আমরা প্রায় 50% "হেডস" এবং 50% "হেডস" দেখতে পাব।
    একটি সাধারণ নিয়ম হিসাবে, যখন উদ্দেশ্যটি পূর্ণসংখ্যার মানগুলির একটি ন্যায্য এবং ন্যায়সঙ্গত বন্টন প্রাপ্ত করা হয়, তখন এটি ব্যবহার করা floor()বাঞ্ছনীয় random()।[কেন সিল() নয়?]
    ফাংশনটি random()আমাদের প্রোগ্রামগুলিতে কিছুটা বৈচিত্র যুক্ত করার একটি দুর্দান্ত উপায়। যাইহোক, এটি সাবধানে ব্যবহার করুন: আপনি যে পরিসরে সংখ্যাগুলি তৈরি করবেন তা সাবধানে চয়ন করুন, রাউন্ডিং প্রয়োজনীয় কিনা তা নির্ধারণ করুন এবং মানগুলি যথাযথভাবে পরীক্ষা করুন৷
    আপনি পরবর্তী প্রকল্পে এই সব চেষ্টা করার সুযোগ থাকবে!
    (1 vote)
    Default Khan Academy avatar l'avatar de l’utilisateur
Vous comprenez l'anglais ? Cliquez ici pour participer à d'autres discussions sur Khan Academy en anglais.