Τυχαίοι αρθμοί

Συζητήσεις για τις γλώσσες του dot Net και για του Visual Studio της Microsoft

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Giorgos3924
Δημοσιεύσεις: 12
Εγγραφή: 14 Αύγ 2008 10:04

Τυχαίοι αρθμοί

Δημοσίευση από Giorgos3924 » 09 Ιαν 2009 21:41

Καλησπέρα...
Πώς μπορώ να φτιάξω μία φόρμα στην οποία θα εμφανίζοντε τυχαίοι αριθμοί
κάτι σάν το κίνο.
Σε κώδικα πώς μπορώ να το γράψω??

οι αριθμοί θα εμφανίζοντε σε label με το πάτημα ενός κουμπιού.
1 label για κάθε αριθμό.
και καλό θα ήταν οι αριθμοί να μην εμφανίζοντε αμέσως αλλα να υπάρχει κάποια καθυστέρηση 1-2 δευτερολέπτων.

Άβαταρ μέλους
tix-3-
Δημοσιεύσεις: 827
Εγγραφή: 25 Μαρ 2004 05:12
Τοποθεσία: Θεσσαλονικη-Καβαλα-βεροια(το τριγωνο της καταρας)
Επικοινωνία:

Τυχαίοι αρθμοί

Δημοσίευση από tix-3- » 10 Ιαν 2009 00:11

Χρησιμοποιωντας την random με ορισμα το ποσο μεγαλο αριθμο θελεις

Ας πουμε για ενα αριθμο μεχρι το 100 θα κανεις:

Κώδικας: Επιλογή όλων

int num = random.Next(100);
Για την αναμονη χρησιμοποιησε timers Η την thread.sleep (που αν εισαι με ενα Thread ειναι κακη ππρακτικη μιας και κολαει το και το gui)
Αν δεν υπήρχανε οι κνίτες κι'η ηρωίνη...

papi1
Δημοσιεύσεις: 8
Εγγραφή: 01 Φεβ 2009 12:58

Τυχαίοι αρθμοί

Δημοσίευση από papi1 » 01 Φεβ 2009 13:24

Κώδικας: Επιλογή όλων

    public class RandomKino
    {
        private System.Random R;
        
        public RandomKino()
        {
            R = new System.Random();
           
        }
        public KinoNum5 Next()
        {
            short[] a = _Next().GetArray();
            if (a[0] == a[1]
                ||
                a[1] == a[2]
                ||
                a[2] == a[3]
                ||
                a[3] == a[4]
           )
            {
                return Next();
            }
            else
            {
                return new KinoNum5(a);
            }
        }
        private  KinoNum5 _Next()
        {
            return new KinoNum5(
                (System.Int16)R.Next(1, 80), 
                (System.Int16)R.Next(1, 80),
                (System.Int16)R.Next(1, 80), 
                (System.Int16)R.Next(1, 80),
                (System.Int16)R.Next(1, 80));
        }
    }

Κώδικας: Επιλογή όλων

public struct KinoNum5
    {
        public System.Int16 GetNum1;
        public System.Int16 GetNum2;
        public System.Int16 GetNum3;
        public System.Int16 GetNum4;
        public System.Int16 GetNum5;
        public KinoNum5(System.Int16 num1, System.Int16 num2, System.Int16 num3, System.Int16 num4, System.Int16 num5)
        {
            this.GetNum1 = num1;
            this.GetNum2 = num2;
            this.GetNum3 = num3;
            this.GetNum4 = num4;
            this.GetNum5 = num5;
        }
        public KinoNum5(short[] array)
        {
            GetNum1 = array[0];
            GetNum2 = array[1];
            GetNum3 = array[2];
            GetNum4 = array[3];
            GetNum5 = array[4];
        }
        public System.Int16[] GetArray()
        {
            System.Int16[] a = new System.Int16[5];
            a[0] = this.GetNum1;
            a[1] = this.GetNum2;
            a[2] = this.GetNum3;
            a[3] = this.GetNum4;
            a[4] = this.GetNum5;
            return a;

        }
    }
΅χω κανει κατι παρομιο

papi1
Δημοσιεύσεις: 8
Εγγραφή: 01 Φεβ 2009 12:58

Τυχαίοι αρθμοί

Δημοσίευση από papi1 » 01 Φεβ 2009 13:49

α και τωρα που το ειδα .. ναι με thread.sleep() θα το κανεις αλα
Για αποφυγη του STACK

Κώδικας: Επιλογή όλων

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        Thread thr;
        safeEx safe;
        public Form1()
        {
            InitializeComponent();
            safe = new safeEx(safeE);
            
        }

        private void button1_Click(object sender, EventArgs e)
        {
            thr = new Thread(DoWork);
            thr.Start();
        }
        public void DoWork()
        {
            Thread.Sleep(5000);
           safeE(label1, "Den stackarw");
            
        }
        public void safeE(Label l, string text)
        {
            if (l.InvokeRequired)
            {
                this.Invoke(safe,l,text);
                
            }
            else
            {
                l.Text = text;
            }
        }
        delegate void safeEx(Label l, string text);
    }
}

Άβαταρ μέλους
dt008
Δημοσιεύσεις: 90
Εγγραφή: 29 Ιουν 2003 01:54
Τοποθεσία: Αθήνα
Επικοινωνία:

Τυχαίοι αρθμοί

Δημοσίευση από dt008 » 17 Μαρ 2009 14:04

Καλό είναι στην Random να δώσεις ένα seed για να έχεις διαφορετικούς αριθμούς κάθε φορά :-)

System.Random rand = new System.Random(DateTime.Now.Milisecond);

Απάντηση

Επιστροφή στο “dot Net και Visual Studio”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες