Διάφορες ασκήσεις

Ξεκίνησε από kwstas, 09 Ιαν 2003, 11:37:20 ΠΜ

« προηγούμενο - επόμενο »

kwstas

3.      Να γραφεί αλγόριθμος που υπολογίζει και εμφανίζει την τιμή της συνάρτησης f(x) = (x2+3x+5)/[(x-1)(x-2)]
.................................

Το μήνυμα αυτό διαγράφηκε επειδή περιείχε ασκήσεις αντιγραμμένες από την ιστοσελίδα κάποιου συναδέλφου, χωρίς αυτός ο συνάδελφος να ερωτηθεί - Άλκης.

alkisg

#1
Ένα «δυσκολούτσικο» προγραμματάκι για όσους έχουν όρεξη (ξεφεύγει αρκετά από το μάθημα)! Υποθέτουμε ότι υπάρχει στην Γλώσσα μια συνάρτηση Τυχαίος(μέγιστος) η οποία επιστρέφει έναν ακέραιο από 0 μέχρι μέγιστος - 1.
Άσκηση στο τάβλι!!!
Φτιάξτε ένα πρόγραμμα που να τυπώνει έναν ακέραιο αριθμό από το 2 μέχρι το 12, ο οποίος να αντιστοιχεί στο άθροισμα της ταυτόχρονης ρίψης δύο ζαριών, όπως στο τάβλι.
Περιορισμοί:
  • Οι αριθμοί από το 2 μέχρι το 12 θα πρέπει να εμφανίζονται με την σωστή πιθανότητα, δηλαδή το 7 πρέπει να είναι το πιο συνηθισμένο αποτέλεσμα
  • Επιτρέπεται μόνο μία κλήση της random (αυτή είναι και η «πρόκληση», με δύο random δεν υπάρχει κάτι δύσκολο)
::) Περιμένω απαντήσεις!!! ::)

TXR

Νομίζω πως βρήκα κάτι:

/*
      Οι πιθανοί συνδυασμών που μπορούμε να φέρουμε με τα 2
      ζάρια ειναι:

    { (1,1),(1,2),(1,3),(1,4),(1,5),(1,6)
        (2,1),(2,2),(2,3),(2,4),(2,5),(2,6)
        (3,1),(3,2),(3,3),(3,4),(3,5),(3,6)
        (4,1),(4,2),(4,3),(4,4),(4,5),(4,6)
        (5,1),(5,2),(5,3),(5,4),(5,5),(5,6)
        (6,1),(6,2),(6,3),(6,4),(6,5),(6,6) }

    Οπότε τα αθροίσματα εμφανίζονται με συχνότητα:
      Αθρ:    2 3 4 5 6 7 8 9 10 11 12
      Συχ:    1 2 3 4 5 6 5 4  3  2   1

    Ο δειγματικός χώρος Ν έχει 36 στοιχεία
      Οπότε η πιθανότητα να φέρουμε άθροισμα x (x = 2,3,...,12)
      είναι:

x       2       3       4        5       6       7       8        9        10     11     12
πιθ.   1/36  2/36  3/36  4/36  5/36  6/36  5/36  4/36  3/36  2/36  1/36

    Σχηματίζουμε τον πίνακα t οπου για κάθε στοιχείο του t
      (i = 0,1,..,11) ισχύει:

      t [0] = 0
      t = t [i-1] + P(i+1)*36  , i ε Ζ , 0<i<=11

      όπου  P(i+1) η πιθανότητα να φέρουμε άθροισμα i+1

      Με αυτόν τον τρόπο καλώντας την συνάρτηση τυχαίος(36)
      παίρνουμε εναν αριθμό r ε Ζ στο διάστημα [0,35]
      Στη συνέχεια ελέγχοντας αν αυτός βρίσκεται στο διάστημα
      [t ,t [i+1]) εμφανίζουμε τον αριθμό (που προκείπτει
      ως άθροισμα των 2 ζαριών) i+2

      Ετσι με αυτη τη χρήση του πίνακα καταφέρνουμε να κρατήσουμε
      τις πιθανότητες εμφάνισης του κάθε αριθμού όπως στο τάβλι
      με μία μόνο κλήση της rand.
      
*/

/*

  Το παρακάτω πρόγραμμα εκτελεί το πείραμα 10000 φορές
  και εμφανίζει τα στατιστικά εμφάνισης του κάθε αριθμού
*/

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int t [] = { 0,1,3,6,10,15,21,26,30,33,35,36 };

int x [11] = { 0 };

int f(int r)
{
      int i;
      for(i=0; i<11; i++) {
            if((r >= t ) && (r < t [i+1])) break;
      }
      return i+2;
}

void results()
{
      int i;
      printf("Results : 2  3  4  5  6  7  8  9  10  11  12\n");
      printf("         ");
      for(i=0; i<11; ++i) printf("%d ",x );

      char c;
      scanf("%c",&c);
}

int main()
{
      srand(time(NULL));
      int i;
      for(i=0; i<10000; i++) {
            x [f(rand()%36)-2] ++;
      }
      results();
      return 0;
}

Πείτε μου την γνώμη σας.

Bothered!

Αγαπητέ kwsta, καλά θα κάνεις να τηρείς κάποιους στοιχειώδεις κανόνες δεοντολογίας. Όταν κατεβάζεις ένα αρχείο με ασκήσεις από το Internet και στη συνέχεια κάνεις Copy-Paste τις ασκήσεις 3-8, χωρίς καν να κάνεις τον κόπο να αλλάξεις τα νούμερα των ασκήσεων, καλό θα είναι να κάνεις και μια αναφορά σ' αυτόν που κόπιασε να τις φτιάξει, όπως στην περίπτωσή μας τον κ. Καραμαούνα Πολύκαρπο (http://users.forthnet.gr/her/kapl).

bugman

#4
Θα τρελαθώ! Πως ξεφεύγει από την ύλη!!!! Δεν το έχω καταλάβει φαίνεται!
!Τα γράφω πάλι με τα δικά μου κουσούρια
! Πινακας α[1..36]
Πινακας α[36]
ν<--1
Για Ι απο 1 μεχρι 6
Για Κ απο 1 μεχρι 6
α[ν]<--ι+κ
ν<--ν+1
Τελος_επαναληψης
Τελος_επαναληψης
Γραψε α[ακέραιος(τυχαίος*35)+1]
----------
0<=ακέραιος(τυχαίος)<=1
0<=ακέραιος(τυχαίος*35)<=35
1<=ακέραιος(τυχαίος*35)+1<=36
--------------------------
Το πρόγραμμα του TXR φαίνεται καλό αλλά κάνει πρόσθετα πράγματα, πχ. δεν χρειάζεται να βάλουμε τα 36 νούμερα σε σειρά διότι ο πίνακας α[] όπως φαίνεται εδώ στην ουσία μετατρέπει το 2 έως 12 αθροίσματα που έχουν **διάφορη** πιθανότητα μεταξύ τους σε 1 εως 36 (εισαγωγή) όπου η τυχαιότητα είναι ομαλή.
Πρόβλημα θα υπάρξει αν η συνάρτηση ψευδοτυχαίων **όπως την λέμε** ακολουθεί την καμπύλη του Gauss, οπότε μάλλον θα κλέβει το τάβλι μας!