👤

Stwórz funkcję zwracającą liczbę losową z przedziału 1 – X. Wygeneruj Y losowych liczb. Za
pomocą Mapy (klucz= liczba z przedziału 1 – X, wartość= ilość wystąpień danej liczby) zbierz
wyniki losowania. Wyświetl zebrane wyniki. X i Y to parametry liczbowe wprowadzone przez
użytkownika.


Odpowiedź :

Nie napisałeś o jaki język programowania chodzi. Poniżej masz w python3 - jak trzeba przepisać na inny język to będziesz miał już ułatwione zadanie.

Rozwiązanie z funkcją zwracającą liczbę losową na podstawie przekazanej 1 zmiennej (klucz, czyli X):

import random

def zwrocLiczbeLosowa(klucz):

   liczba = random.randrange(1,klucz)

   return liczba

if __name__ == "__main__":

   print("\n" + "#" *40)

   print("Klucz - liczba z przedziału 1-X")

   print("Wartość - ilość wystąpień danej liczby")

   print("#" *40 + "\n")

   while True:

       try:

           klucz = int(input("Podaj klucz: "))

           if klucz < 1:

               print("BŁĄD! Podaj liczbę większą od 1.\n")

           else:

               break

       except ValueError:

           print("BŁĄD! Podaj liczbę całkowitą.\n")

       

   while True:

       try:

           wartosc = int(input("Podaj wartość: "))

           if wartosc < 1:

               print("BŁĄD! Podaj liczbę większą od 1.\n")

           else:

               break

       except ValueError:

           print("BŁĄD! Podaj liczbę całkowitą.\n")

           

   print("\n" + "#" *40)

   print(f"Podany klucz: {klucz}")

   print(f"Podana wartość: {wartosc}")

   print("#" *40 + "\n")

   print(f"\nWyświetlam {wartosc} losowych liczb z zakresu 1-{klucz}:")

   

   for i in range(wartosc):

       print(zwrocLiczbeLosowa(klucz))

Rozwiązanie z funkcją, do której przekazywane są obie zmienne - tj. klucz i wartość - na podstawie, których tworzona i zwracana jest tablica wyników. Potem tylko przypisujemy sobie to co zwraca funkcja do zmiennej (mojeWyniki) i wyświetlamy po jednej linijce wszystko z listy:

import random

def generujWynik(klucz, wartosc):

   tablicaWynikow = []

   for i in range(wartosc):

       tablicaWynikow.append(random.randrange(1,klucz))

   return tablicaWynikow

if __name__ == "__main__":

   print("\n" + "#" *40)

   print("Klucz - liczba z przedziału 1-X")

   print("Wartość - ilość wystąpień danej liczby")

   print("#" *40 + "\n")

   while True:

       try:

           klucz = int(input("Podaj klucz: "))

           if klucz < 1:

               print("BŁĄD! Podaj liczbę większą od 1.\n")

           else:

               break

       except ValueError:

           print("BŁĄD! Podaj liczbę całkowitą.\n")

       

   while True:

       try:

           wartosc = int(input("Podaj wartość: "))

           if wartosc < 1:

               print("BŁĄD! Podaj liczbę większą od 1.\n")

           else:

               break

       except ValueError:

           print("BŁĄD! Podaj liczbę całkowitą.\n")

           

   print("\n" + "#" *40)

   print(f"Podany klucz: {klucz}")

   print(f"Podana wartość: {wartosc}")

   print("#" *40 + "\n")

   print(f"\nWyświetlam {wartosc} losowych liczb z zakresu 1-{klucz}")

   

   mojeWyniki = (generujWynik(klucz, wartosc))

   for wynik in mojeWyniki:

       print(wynik)

Działanie (oba skrypty pokażą to samo):

❯ python3 liczby.py

########################################

Klucz - liczba z przedziału 1-X

Wartość - ilość wystąpień danej liczby

########################################

Podaj klucz: asd

BŁĄD! Podaj liczbę całkowitą.

Podaj klucz: 0

BŁĄD! Podaj liczbę większą od 1.

Podaj klucz: -5

BŁĄD! Podaj liczbę większą od 1.

Podaj klucz: 99

Podaj wartość: 5

########################################

Podany klucz: 99

Podana wartość: 5

########################################

Wyświetlam 5 losowych liczb z zakresu 1-99:

80

53

78

19

92

Pozdrawiam