Liczby pseudolosowe. #include <stdio.h> #include <stdlib.h> int main() { printf("%d\n", RAND_MAX); return 0; }

Podobne dokumenty
3 Przygotował: mgr inż. Maciej Lasota

Programowanie w C Wartości pseudolosowe i pomiar czasu

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

Wstęp do programowania

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015

Platforma.NET. Laboratorium nr 1 Podstawy języka C#

Podstawy programowania. Wykład: 5. Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 4. Karol Tarnowski A-1 p.

Laboratorium_1: Temat: Wprowadzenie do języka C++ 1. Operatory. Arytmetyczne

Język C zajęcia nr 11. Funkcje

lekcja 8a Gry komputerowe MasterMind

Ćwiczenia laboratoryjne. Oprogramowanie i badanie prostych metod sortowania w tablicach

Wstęp do programowania

Spis treści JĘZYK C - TABLICE JEDNOWYMIAROWE. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF05Z

I. Podstawy języka C powtórka

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

2 Przygotował: mgr inż. Maciej Lasota

Informatyka I: Instrukcja 4.2

Podstawy i języki programowania

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy

Modelowanie komputerowe

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Instrukcje sterujące mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2012

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Wstęp do Programowania, laboratorium 02

Zmienne. 2.1 Wprowadzenie

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Liczby całkowite i rzeczywiste

Laboratorium MATLA. Ćwiczenie 1

Język C część 1. Sformułuj problem Zanalizuj go znajdź metodę rozwiązania (pomocny może byd algorytm) Napisz program Uruchom i przetestuj czy działa

. Podstawy Programowania 1. Typy wyliczeniowe i jednowymiarowe tablice. Arkadiusz Chrobot. 29 listopada 2016

Instytut Fizyki Politechniki Łódzkiej Laboratorium Metod Analizy Danych Doświadczalnych Ćwiczenie 3 Generator liczb losowych o rozkładzie Rayleigha.

Tablice jednowymiarowe

Projekt współfinansowany przez Unię Europejską ze środków Europejskiego Funduszu Społecznego

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Podstawy programowania skrót z wykładów:

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

Funkcje. Deklaracja funkcji. Definicja funkcji. Wykorzystanie funkcji w programie.

Zmienne, stałe i operatory

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Wprowadzenie do języka Java

Język C++ zajęcia nr 2

MATEMATYKA Z ELEMENTAMI STATYSTYKI LABORATORIUM KOMPUTEROWE DLA II ROKU KIERUNKU ZARZĄDZANIE I INŻYNIERIA PRODUKCJI ZESTAWY ZADAŃ

Języki i metodyka programowania. Wprowadzenie do języka C

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

Programowanie obiektowe

Podstawy programowania w języku C i C++

Typy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Ćwiczenie 1. Podstawy. Wprowadzenie do programowania w języku C. Katedra Metrologii AGH

Spis treści PLIKI BINARNE W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF23

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

2. Zmienne i stałe. Przykłady Napisz program, który wypisze na ekran wynik dzielenia 281 i 117 w postaci liczby mieszanej (tj. 2 47/117).

Semafor ustaw_semafor(key_t nazwa, int start); Semafor usun_semafor(semafor sem); void signal(semafor sem); void wait(semafor sem);

P R OGRA M OW A N I E KOMPUTERÓW Ćwiczenia laboratoryjne

Programowanie komputerowe. Zajęcia 1

Temat 1. Podstawy Środowiska Xcode i wprowadzenie do języka Objective-C

INFORMATYKA Studia Niestacjonarne Elektrotechnika

#include <iostream> using namespace std; void ela(int); int main( ); { Funkcja 3. return 0; }

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Pytania sprawdzające wiedzę z programowania C++

Podstawy programowania C. dr. Krystyna Łapin

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

1 P roste e t ypy p d a d n a ych c - c ąg ą g d a d l a szy 2 T y T py p z ł z o ł żo ż ne e d a d n a ych c : T BLICE

C++ wprowadzanie zmiennych

Liczby losowe i pętla while w języku Python

PROLOG INNE PRZYKŁADY MACIEJ KELM

Programowanie strukturalne i obiektowe. Funkcje

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

> C++ wskaźniki. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki 26 kwietnia 2017

Metody Rozmyte i Algorytmy Ewolucyjne

*W uproszczeniu: jest dziewięciu sędziów przyznających po dwie noty: za wartość techniczną i artystyczną (skala od 0.0 do 6.0)

Scenariusz zajęć. Moduł VI. Projekt Gra logiczna zgadywanie liczby

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 25 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 38

Kilka prostych programów

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Podstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy

Podstawy programowania komputerów

EGZAMIN MATURALNY 2011 INFORMATYKA

SCHEMAT ROZWIĄZANIA ZADANIA OPTYMALIZACJI PRZY POMOCY ALGORYTMU GENETYCZNEGO

Temat 7. Programowanie mikrokontrolerów z rodziny PIC16 w języku C przy użyciu HI-TECH C for PIC10/12/16

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

INSTRUKCJE REPETYCYJNE PĘTLE

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 26 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 28

Stałe oznaczane są słowem kluczowym final. Do stałej wartość można przypisać tylko raz. Dobrą konwencją jest nazywanie stałych wielkimi literami

Programowanie strukturalne i obiektowe

Podstawowe typy zmiennych

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

Transkrypt:

Liczby pseudolosowe Standardowa biblioteka języka C w pliku nagłówkowym <stdlib.h> posiada zadeklarowane dwie funkcje służące do generowania liczb pseudolosowych: rand i srand. Funkcja srand() jako parametr przyjmuje seed, czyli tzw. ziarno/zarodek jest to zmienna liczba (unsigned int) na podstawie, której inicjowany jest generator liczb dla nowego ciągu liczb pseudolosowych. Funkcja rand() służy do losowania liczb pseudolosowych, zwraca ona liczbe całkowita (int) z przedziału miedzy 0 a stała RAND_MAX. RAND_MAX jest to stała zadeklarowana w pliku nagłówkowym <stdlib.h> wynosi ona co najmniej 32767 (jest stałą, która jest zależna od posiadanego kompilatora i posiadanych bibliotek). printf("%d\n", RAND_MAX); Aby wygenerować liczbę z dowolnego przedziału, wynik funkcji rand poddajemy operacji modulo np. rand() % 10 - losuje liczby z przedziału od 0 do 9. printf("%d\n", rand() % 10); Aby komputer korzystając z funkcji rand za każdym jej wywołaniem losował różne liczby, wymagane jest skonfigurowanie generatora liczb losowych. Z pomocą przychodzi nam kolejna funkcja i jest nią srand. Funkcja srand ustawia punkt startowy dla mechanizmu generowania kolejnych liczb całkowitych. W dużym uproszczeniu napisanie: srand(123); ustawi punkt startowy 123, a zapis srand(543); ustawi punkt startowy 543. Co to daje? W sumie tyle, że losowane są inne liczby. Aby uzyskać każdorazowo inne wylosowane wartości w raz skompilowanym programie należy powiązać funkcję srand z czasem rzeczywistym, ustawionym obecnie w komputerze. Tu będziemy zmuszeni dołączyć kolejny plik nagłówkowy, i jest nim time.h Biblioteka time.h dostarczy nam między innymi funkcję time, która zwraca obecny czas na komputerze w postaci liczby.

printf("%d\n", rand() % 10); Przykłady użycia funkcji rand: Generowanie liczby pseudolosowej całkowitej z zakresu [0; X] int liczba, X = 100; liczba = rand() % (X + 1); printf("%d\n", liczba); Generowanie liczby pseudolosowej całkowitej z zakresu [X; Y] int liczba, X = 100, Y = 200; liczba = X + rand() % (Y - X + 1); printf("%d\n", liczba);

Generowanie liczby pseudolosowej rzeczywistej z zakresu [X; Y] double liczba, X = 100, Y = 200; liczba = X + (double) rand() / RAND_MAX * (Y - X); Generowanie liczby pseudolosowej rzeczywistej zakresu [0; 1] double liczba; liczba = (double) rand() / RAND_MAX;

Generowanie liczby losowej rzeczywistej z zakresu [0; X] double liczba, X = 100; liczba = (double) rand() / RAND_MAX * X; Pomiar czasu Do pomiaru czasu w języku C służy funkcja time, która zwraca aktualny czas na komputerze (w sekundach) Aby zmierzyć czas działania danej operacji w czasie działania programu, należy wywołać funkcję po raz pierwszy przed wykonaniem operacji, oraz po raz drugi tuż po wykonaniu operacji, a następnie odjąć od siebie oba wyniki. Dzięki temu otrzymamy czas działania danej operacji w sekundach: int start = time(0); /*... */ int end = time(0);

Zadania do wykonania Zadanie 1 Napisz program, który będzie losował jedną liczbę (poinformuj użytkownika czy jest to liczba całkowita czy rzeczywista) a następnie użytkownik będzie zgadywał jaka liczba została wylosowana, ma maksymalnie 10 prób. Jeśli nie zgadnie za 3 razem to program ma wyświetlać informacje pomocnicze, że liczba jaką podał jest za duża lub za mała. Na koniec poinformuj użytkownika, za którym razem odpowiedział lub że nie udało mu się odgadnąć liczbę. Zadanie 2 Napisz program, w którym użytkownik wybierze zakres z jakiego będzie losowana liczba, ilość losowanych liczb oraz rodzaj liczby (czy to będzie liczba całkowita czy rzeczywista). Zadbaj o odpowiednie komunikaty, z możliwością wyboru danych. Zadanie 3 Napisz program, który realizuje następujące operacje: losowanie liczby całkowitej z zakresu [-15; 15] losowanie liczby rzeczywistej z zakresu [1.5; 2.25] losowanie liczby rzeczywistej z zakresu [0; 64.5] Zadanie 4 Napisz program, który zapyta użytkownika o liczbę w postaci binarnej (np. 100000101 - zadeklaruj zmienną typu long int) a następnie napisz funkcję, która podaną liczbę w postaci binarnej zamieni na liczbę dziesiętną. Zmierz czas wykonania 100 operacji konwersji z postaci binarnej na dziesiętną. Podaj czas w sekundach i minutach.