Contenu principal
Apprendre à coder
Cours : Apprendre à coder > Chapitre 1
Leçon 10: La logique et les instructions conditionnelles- Instructions conditionnelles
- Défi : la balle qui rebondit
- Plus d'interactions avec la souris
- Défi : votre première application de dessin
- Les booléens
- Défi : l'analyseur de nombres
- Les opérateurs logiques
- Défi : votre premier bouton
- Défi : un bouton plus intelligent
- If/Else - partie 1
- Défi : la fiche flashy
- If/Else - partie 2
- Résumé : la logique et les instructions conditionnelles
- Les nombres aléatoires
- Projet : la boule magique numéro 8
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,0 | 0 |
0,217… | 0 |
0,542… | 0 |
0,973… | 0 |
1,0 | 1 |
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 ?
- je vous remerciement pbeaucoup pour les arrondis(1 vote)
- 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)- on peut voir le code de Math.random à github point com/v8/v8/blob/main/src/numbers/math-random.cc(1 vote)
- 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)