CS1010 Programming Methodology

Slides:



Advertisements
Similar presentations
C Structures What is a structure? A structure is a collection of related variables. It may contain variables of many different data types---in contrast.
Advertisements

Building Java Programs
Exercise 4 1. Write a program that simulates coin tossing. For each toss of the coin the program should print Heads or Tails. Let the program toss the.
Programming Assignment #3 CS-2301, B-Term Programming Assignment #3 User-defined Functions Due, November 18, 11:59 PM (Assignment adapted from C:
1 Session-23 CSIT 121 Spring 2006 Revision Ch 7: Reference Parameters Revision Ch 7: Reference Parameters Chapter 8: Value Returning Functions Chapter.
1 Lab Session-9 CSIT-121 Fall 2003 w Random Number Generation w Designing a Game.
1 Random numbers Random  completely unpredictable. No way to determine in advance what value will be chosen from a set of equally probable elements. Impossible.
Lecture 15 Practice & exploration Subfunctions: Functions within functions “Guessing Game”: A hands-on exercise in evolutionary design © 2007 Daniel Valentine.
Craps!. Example: A Game of Chance Craps simulator Rules – Roll two dice 7 or 11 on first throw, player wins 2, 3, or 12 on first throw, player loses 4,
Gator Engineering Copyright © 2008 W. W. Norton & Company. All rights reserved. 1 Chapter 10 Program Organization (continued)
CS1010E Programming Methodology Tutorial 4 Modular Programming with Functions C14,A15,D11,C08,C11,A02.
Week 7 - Wednesday.  What did we talk about last time?  scanf()  Memory allocation  malloc()  free()
C++ Programming Lecture 10 Functions – Part II
Gator Engineering Copyright © 2008 W. W. Norton & Company. All rights reserved. 1 Chapter 9 Functions (continued)
CS221 Random Numbers. Random numbers are often very important in programming Suppose you are writing a program to play the game of roulette The numbers.
CS 261 – Recitation 2 Fall 2013 Oregon State University School of Electrical Engineering and Computer Science.
Agenda Perform Quiz #1 (20 minutes) Loops –Introduction / Purpose –while loops Structure / Examples involving a while loop –do/while loops Structure /
Random numbers in C++ Nobody knows what’s next....
UNIT 11 Random Numbers.
Instructor: Alexander Stoytchev CprE 185: Intro to Problem Solving (using C)
Review (before the 1 st test): while (conditions) { statements; } while loop: if/else if/else statements: if (conditions) { statements; } else if (different.
Chapter 8: Arrays Gator Engineering One-dimensional array Copyright © 2008 W. W. Norton & Company. All rights reserved. 1 Move the first element to the.
Function Call Stack and Activation Frame Stack Just like a pile of dishes Support Two operations push() pop() LIFO (Last-In, First-Out) data structure.
CSE202: Lecture 13The Ohio State University1 Function Scope.
Engineering Problem#1 Engr201 Computer Programming for Engineers Faculty of Engineering Chiang Mai University 1.
1 Generating Random Numbers Textbook ch.6, pg
MR. CRONE Generating Random Numbers. Random Numbers Many programs require the computer to generate random numbers Random numbers are used in many applications.
CHAPTER 4 REPETITION STRUCTURES 1 st semester King Saud University College of Applied studies and Community Service Csc 1101 A.AlOsaimi.
Chapter 9: Value-Returning Functions
CS1010 Programming Methodology
CSE 220 – C Programming C Fundamentals.
Building Java Programs
EKT120 COMPUTER PROGRAMMING
EKT150 INTRODUCTION TO COMPUTER PROGRAMMING
CS1010 Programming Methodology
C Functions Pepper.
TMF1414 Introduction to Programming
Functions, Part 2 of 2 Topics Functions That Return a Value
Random Numbers Until now, all programs have behaved deterministically - completely predictable and repeatable based on input values Some applications.
Number guessing game Pick a random number between 1 and 10
CS1010 Programming Methodology
Chapter 2 Overview of C.
Iterative Constructs Review
Arrays Chapter 8 Copyright © 2008 W. W. Norton & Company.
CS1010 Programming Methodology
CS1010 Programming Methodology
Deitel- C:How to Program (5ed)
Lab Session-9 CSIT-121 Spring 2005
CprE 185: Intro to Problem Solving (using C)
Chapter 5 - Functions Outline 5.1 Introduction
Random Number Generation
Software John Sum Institute of Technology Management
Pick a number, any number …
Chapter 8 The Loops By: Mr. Baha Hanene.
We’re moving on to more recap from other programming languages
Assignment Operators Topics Increment and Decrement Operators
Assignment Operators Topics Increment and Decrement Operators
Introduction to Programming
UMBC CMSC 104 – Section 01, Fall 2016
CS150 Introduction to Computer Science 1
Pointers Chapter 11 Copyright © 2008 W. W. Norton & Company.
The first number is posted telling what random number was selected, I did this for testing purposes, in the real thing it would not be there. Since the.
ECE 103 Engineering Programming Chapter 51 Random Numbers
Pointers Chapter 11 Copyright © 2008 W. W. Norton & Company.
Pointers Chapter 11 Copyright © 2008 W. W. Norton & Company.
READING AND PRINTING MATRICES (with functions)
Review Lab assignments Homework #3
Revision.
Assignment Operators Topics Increment and Decrement Operators
Functions that return a value
Presentation transcript:

CS1010 Programming Methodology http://www.comp.nus.edu.sg/~cs1010/ UNIT 10 Random Numbers

CS1010 Programming Methodology Aaron Tan, NUS Random Numbers Unit 10: Random Numbers Objective: Learn the use of random numbers

CS1010 Programming Methodology Aaron Tan, NUS Random Numbers Unit 10: Random Numbers Introduction rand() srand() “Randomising” the Seed The HiLo Game

CS1010 Programming Methodology Aaron Tan, NUS Random Numbers 1. Introduction In simulation and games, we need random number generation. Computer cannot generate true random numbers. At most, they could generate pseudo-random numbers, close enough to being random and good enough for most practical purposes. We will learn two functions here: rand() srand()

CS1010 Programming Methodology Aaron Tan, NUS Random Numbers 2. rand() (1/2) Run the following program Unit10_Random1.c <stdlib.h> needed to use rand() function #include <stdio.h> #include <stdlib.h> int main(void) { int i; for (i = 1; i <= 10); i++) printf("%d\n", rand()); return 0; } Unit10_Random1.c 16838 5758 10113 17515 31051 5627 23010 7419 16212 4086 The same set of numbers are generated every time the program is run!

CS1010 Programming Methodology Aaron Tan, NUS Random Numbers 2. rand() (2/2) In sunfire, rand() generates an integer in the range [0, 32676]. (Note: [a, b] indicates a closed range, i.e. the range is inclusive of both a and b.) The same set of numbers are printed every time the program is run because the numbers are picked from a pre-determined sequence based on some seed. Question: How to generate an integer in the range [101, 500]? for (i = 1; i <= 10); i++) printf("%d\n", rand()%400 + 101); Unit10_Random2.c In general, to generate an integer in the range [a, b], we write: rand()%(b-a+1) + a (This is not the best way, but a simple technique for our purpose.)

CS1010 Programming Methodology Aaron Tan, NUS Random Numbers 3. srand() (1/2) As mentioned, these “random numbers” generated are the same from run to run, due to the same default seed being used. To get a different set of random numbers each time the program is run, the trick is to change the seed, by calling the srand() function. A particular seed (which is an integer) indicates which pre-determined sequence of pseudo-numbers to use, and a subsequent call to rand() will pick up the next number from this sequence. Hence, you need only call srand() function once, before you call the rand() function.

CS1010 Programming Methodology Aaron Tan, NUS Random Numbers 3. srand() (2/2) Enter seed: 3 248 408 466 413 323 297 274 444 493 308 Test out the program Unit10_Random3.c #include <stdio.h> #include <stdlib.h> int main(void) { int seed, i; printf("Enter seed: "); scanf("%d", &seed); srand(seed); // feed srand() with a new seed for (i = 1; i <= 10); i++) printf("%d\n", rand()%400 + 101); return 0; } Unit10_Random3.c Enter seed: 27 351 199 284 249 242 449 402 425 351 445

4. “Randomising” the Seed (1/2) CS1010 Programming Methodology Aaron Tan, NUS Random Numbers 4. “Randomising” the Seed (1/2) In the preceding example, the user is asked to enter a value for the seed. However, in many applications such as games or simulations, we want to “automate” this step since we do not want user’s invention. How do we ensure that every time the program is run, a different seed is used? One simple solution is to use the time(NULL) function, which returns an integer that is the number of seconds since 1st of January 1970. This value can then be used as the seed for the srand() function.

4. “Randomising” the Seed (2/2) CS1010 Programming Methodology Aaron Tan, NUS Random Numbers 4. “Randomising” the Seed (2/2) 408 368 136 360 429 474 378 359 120 229 #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int i; srand(time(NULL)); for (i = 1; i <= 10); i++) printf("%d\n", rand()%400 + 101); return 0; } Unit10_Random4.c <time.h> needed to use time() function 117 388 357 367 242 341 483 300 382

CS1010 Programming Methodology Aaron Tan, NUS Random Numbers 5. The HiLo Game (1/3) We will illustrate with the HiLo game, where user is asked to guess a secret number between 1 and 100 inclusive, given up to 5 attempts. *** Welcome to the HiLo game! *** Guess a number between 1 and 100 inclusive. Enter your guess [1]: 50 Your guess is too low! Enter your guess [2]: 70 Enter your guess [3]: 90 Your guess is too high! Enter your guess [4]: 83 Enter your guess [5]: 76 Too bad. The number is 72. Better luck next time! Do you want to play again (y/n)?

CS1010 Programming Methodology Aaron Tan, NUS Random Numbers 5. The HiLo Game (2/3) #include <stdio.h> #include <time.h> #include <stdlib.h> void play_a_game(int); int main(void) { int secret; char response; srand(time(NULL)); printf("*** Welcome to the HiLo game! ***\n"); do { secret = rand()%100 + 1; play_a_game(secret); printf("Do you want to play again (y/n)? "); scanf(" %c", &response); } while (response == 'y'); printf("\n*** Thanks for playing. Bye! ***\n"); return 0; } Unit10_HiLo.c

CS1010 Programming Methodology Aaron Tan, NUS Random Numbers 5. The HiLo Game (3/3) // Play one HiLo game void play_a_game(int secret) { int guess, tries = 0; printf("\nGuess a number between 1 and 100 inclusive.\n"); do { tries++; printf("Enter your guess [%d]: ", tries); scanf("%d", &guess); if (guess < secret) printf("Your guess is too low!\n"); else if (guess > secret) printf("Your guess is too high!\n"); } while ( (tries < 5) && (guess != secret) ); if (guess == secret) { printf("Congratulations! You did it in %d step", tries); if (tries == 1) printf(".\n"); else printf("s.\n"); } else printf("Too bad. The number is %d. Better luck next time!\n", secret); Unit10_HiLo.c

CS1010 Programming Methodology Aaron Tan, NUS Random Numbers Summary In this unit, you have learned about Generating pseudo-random numbers using rand() Seeding a pseudo-random sequence using srand() Providing a “random” seed by using time(NULL) in the srand() function

CS1010 Programming Methodology Aaron Tan, NUS Random Numbers End of File