Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

  • Απαντ. 130
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Συχνή συμμετοχή στο θέμα

Δημοσιευμένες Εικόνες

Δημοσ.

Ευχαριστώ αλλά να πω την αλήθεια δεν κατάλαβα πως λειτούργει. Δηλαδή οι αριθμοί που έβαλες είναι κάποιο διάστημα ; ,το + τι σημαίνει (από ότι δοκίμασα μπορώ να βάλω και -,/,* ) ;

Δημοσ.

Για την ακρίβεια... δεν θα είναι ακριβώς τυχαίες οι τιμές..

 

Για να πάρεις όσο πιο δυνατό τυχαίες τιμές θα μπορούσες να γράψεις κάτι σαν:

 

 

foo[i][j] = 10 + (( (rand() * 1.0) / (RAND_MAX + 1.0) )* 80); 
Δημοσ.

Δεν κερδίζεις τίποτα με το να μετατρέψεις το [0, RAND_MAX]  σε double [0.0 , 1.0]

 

Famous last words....

 

 

 

Μπορεί στις περισσότερες περιπτώσεις το κέρδος να μην φαίνεται, αλλά είναι πιο "τυχαίο" (από άποψη κατανομής) το αποτέλεσμα έτσι. 

 

Δημοσ.

Παιρνουμε και οι δυο ενα rand(), εγώ του κάνω την πράξη X, εσυ την Υ. (και οι δύο πράξεις είναι ντετερμινιστικες ),

Γιατι το δικό σου αποτέλεσμα να είναι πιο "τυχαίο" ?

  • Like 1
Δημοσ. (επεξεργασμένο)

Έκατσα και υπολόγισα (το pc δλδ, όχι εγώ  :-) ) τους 2 τύπους ( % και double)  για όλα τα rand  [0, int.MAX] για να μετρήσω τις συχνότητες των τιμών [10, 90].

 

Αργεί κάπου 15-20  sec (μετράει 0 εως 2^31)

static void Main()
        {
            int[] countX = new int[90];
            int[] countY = new int[90];
            for(int rand = 0; rand < int.MaxValue; rand++)
            {
                int x = rand % 80 + 10;  // X method
                countX[x]++;
                int y = (int)(10 + ((rand * 1.0 / (int.MaxValue + 1.0)) * 80)); // Y method 
                countY[y]++;
            }

            for(int i = 10; i < 90; i++)
                Console.WriteLine("Freq " + i + " :  " + countX[i] + "   " + countY[i]);
        }

Η συχνότητα το εμφανίσεων είναι  26843545 η 26843546  σε όλους  (int.Max /80 δλδ)

Επεξ/σία από albNik
Δημοσ.

Οκ καταλαβα , επειδη το MAX δεν διαιρείται απο το 80 ,εχει υπόλοιπο 47 , τότε με τη μέθοδό μου οι αριθμοί 10 μέχρι 10+ 47 έχουν συχνοτητα κατα ενα μεγαλύτερη απο τους αλλους  [58 μεχρι 89]. 

Ενώ με το double είναι πιο ανακατεμένοι αυτοί μου έχουν συχνότητα +1.

 

Η διαφορα είναι ποιους αριθμους επιλέγει η καθε μεθοδος να βάζει +1 συχνότητα.

Δλδ με τι δικιά μου έχουν λιιιιιιγο μεγαλύτερη πιθανότητα η αριθμοί [10, 57] ενώ με τι δικιά σου οι αριθμοί 10, 11, 13 ...20, 23, ....

 

 

 

 

Αν βάλω το rand =int.MAX τοτε και στο 89 ειναι ΟΚ η μεθοδός σου.

Δημοσ.

Πρέπει να φτιάξω δυο συναρτήσεις όπου και οι δυο θα δέχονται συντεταγμένες (x,y) με τύπο float και θα επιστέφουν μετά από υπολογισμούς πάλι συντεταγμένες (x,y) η ερώτηση είναι εγώ τι τύπο συνάρτησης να χρησιμοποιήσω;

 

Στην εκφώνηση της άσκηση λέει για void εγώ ξέρω ότι την void την χρησιμοποιούμε όταν η συνάρτηση δεν επιστέφει κάποια τιμή ,εγώ τώρα τι να βάλω ;

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...