3. Να γραφεί αλγόριθμος που υπολογίζει και εμφανίζει την τιμή της συνάρτησης f(x) = (x2+3x+5)/[(x-1)(x-2)]
.................................
Το μήνυμα αυτό διαγράφηκε επειδή περιείχε ασκήσεις αντιγραμμένες από την ιστοσελίδα κάποιου συναδέλφου, χωρίς αυτός ο συνάδελφος να ερωτηθεί - Άλκης.
Ένα «δυσκολούτσικο» προγραμματάκι για όσους έχουν όρεξη (ξεφεύγει αρκετά από το μάθημα)! Υποθέτουμε ότι υπάρχει στην Γλώσσα μια συνάρτηση Τυχαίος(μέγιστος) η οποία επιστρέφει έναν ακέραιο από 0 μέχρι μέγιστος - 1.
Άσκηση στο τάβλι!!! Φτιάξτε ένα πρόγραμμα που να τυπώνει έναν ακέραιο αριθμό από το 2 μέχρι το 12, ο οποίος να αντιστοιχεί στο άθροισμα της ταυτόχρονης ρίψης δύο ζαριών, όπως στο τάβλι.
Περιορισμοί:- Οι αριθμοί από το 2 μέχρι το 12 θα πρέπει να εμφανίζονται με την σωστή πιθανότητα, δηλαδή το 7 πρέπει να είναι το πιο συνηθισμένο αποτέλεσμα
- Επιτρέπεται μόνο μία κλήση της random (αυτή είναι και η «πρόκληση», με δύο random δεν υπάρχει κάτι δύσκολο)
::) Περιμένω απαντήσεις!!! ::)
Νομίζω πως βρήκα κάτι:
/*
Οι πιθανοί συνδυασμών που μπορούμε να φέρουμε με τα 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 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;
}
Πείτε μου την γνώμη σας.
Αγαπητέ kwsta, καλά θα κάνεις να τηρείς κάποιους στοιχειώδεις κανόνες δεοντολογίας. Όταν κατεβάζεις ένα αρχείο με ασκήσεις από το Internet και στη συνέχεια κάνεις Copy-Paste τις ασκήσεις 3-8, χωρίς καν να κάνεις τον κόπο να αλλάξεις τα νούμερα των ασκήσεων, καλό θα είναι να κάνεις και μια αναφορά σ' αυτόν που κόπιασε να τις φτιάξει, όπως στην περίπτωσή μας τον κ. Καραμαούνα Πολύκαρπο (http://users.forthnet.gr/her/kapl).