---
title: "Problem med slumpa fram olika tal(frågor)"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/178033-problem-med-slumpa-fram-olika-tal-frågor"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "saw"
published: "2009-04-15T08:59:54.000Z"
updated: "2009-04-16T08:18:58.000Z"
replies: 5
views: 570
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/178033-problem-med-slumpa-fram-olika-tal-frågor"
---

# Problem med slumpa fram olika tal(frågor)

## #1 — saw, 2009-04-15T08:59Z

Jag har  en frågelek som bygger på att slumpa fram 10 olika frågor ur en 
access databas. Den fungerade perfekt i klassisk ASP men nu har jag problem
med att slumpa nya frågor dvs första gången så går det bra, men vill man 
spela igen så blir det samma frågor.
Så här ser i stort sett hela klassen ut

```
oid loadWizar()
    {
        string sql = "SELECT MAX(id) AS maxid FROM Quize";
        OleDbCommand myCommand = new OleDbCommand(sql, DBConn);

        int max = 0;
        using (DBConn)
        {
            DBConn.Open();
            max = (int)myCommand.ExecuteScalar();
        }

        if (max == 0)
            try { }
            catch
            {
                throw;
            }

        List<int> col = new List<int>();
        Random rnd = new Random();
        for (int i = 0; i < 10; i++)
        {
            int x;
            do
            {
                x = rnd.Next(1, max);
            }
            while (col.Contains(x));
            col.Add(x);
        }
        DBConn.Close();

        sql = "SELECT Quize.Id, Quize.Fraga, Quize.Allt1, Quize.Allt2, Quize.Allt3, Quize.Svar, Quize.Ratt FROM Quize ";
        sql += "  WHERE Quize.Id  IN( ";
        int k = 1;
        foreach (int i in col)
        {
            if (k != 10)
                sql += i.ToString() + ",";
            else
                sql += i.ToString();
            k += 1;
        }
        sql += " )";
        Response.Write(sql);
        DBConn = new OleDbConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
        DataTable dt = Webbutill.fillDataTable(DBConn, sql);

        if (dt.Rows.Count > 0)
        {
            makeQuize(Lfraga_1,RadioButtonList1,"svar1",dt,0);
            makeQuize(Lfraga_2, RadioButtonList2, "svar2", dt, 1);
            makeQuize(Lfraga_3, RadioButtonList3, "svar3", dt, 2);
            makeQuize(Lfraga_4, RadioButtonList4, "svar4", dt, 3);
            makeQuize(Lfraga_5, RadioButtonList5, "svar5", dt, 4);
            makeQuize(Lfraga_6, RadioButtonList6, "svar6", dt, 5);
            makeQuize(Lfraga_7, RadioButtonList7, "svar7", dt, 6);
            makeQuize(Lfraga_8, RadioButtonList8, "svar8", dt, 7);
            makeQuize(Lfraga_9, RadioButtonList9, "svar9", dt, 8);
            makeQuize(Lfraga_10, RadioButtonList10, "svar10", dt, 9);
        }
```

.. någon som kan räkna ut varför jag får problem?

Permalänk: https://www.webforum.nu/p/178033

## #2 — Gladh, 2009-04-15T14:29Z

Problemet är Random() som inte är slumpmässig i det avseende som du tror, det är faktiskt i en speciell följd och det är så för att man skall kunna debuga sin kod och göra felsökningar.

För att få det någolunda slumpmässigt så måste du änvända dig av ett för (seed) när du skapar din Random-klass och millisekunder är ett bra värde för det.

```
Random rand = new Random(DateTime.Now.Millisekund);
```

Eller något sådant. Det kommer ju aldrig bli helt slumpmässigt eftersom om du efterfrågar på exakt samma millisekund så kommer samma ordningsföljd upp. Men bättre än så kan du inte få det :)

\- M

Permalänk: https://www.webforum.nu/p/2181949

## #3 — spango, 2009-04-15T14:42Z

> **[Gladh skrev:](https://www.webforum.nu/p/1464457)**
>
> För att få det någolunda slumpmässigt så måste du änvända dig av ett för (seed) när du skapar din Random-klass och millisekunder är ett bra värde för det.

[Defaultkonstruktorn för random](http://msdn.microsoft.com/en-us/library/h343ddh9.aspx) använder ett tidsbaserat frö, så det kommer inte hjälpa här.

Permalänk: https://www.webforum.nu/p/2181951

## #4 — saw, 2009-04-15T16:30Z

Problemet är tydligen någonting annat dumt som jag har gjort, jag gjorde en testsida 
med koden ovan och då fungerade random perfekt(kollade sql). Kan det vara någon 
catch som ligger och gör dumheter?

Permalänk: https://www.webforum.nu/p/2181967

## #5 — saw, 2009-04-15T19:31Z

De första 10 nummerna går bra, men hur jag än gör så kan jag inte få den att slumpa 
fram 10 nya nummer. Någon som har ett bra tips?

Permalänk: https://www.webforum.nu/p/2181979

## #6 — saw, 2009-04-16T08:18Z

Jag har nu "lyckats" på ett sätt som jag inte tycker om.  x(
Jag fick först ta bort Ajax asp:UpdatePanel, sedan fick jag lägga till en ny 
knapp som slumpade nya frågor och som disablades när man börjar 
frågesporten.

Det fungerar men inte snyggt... :q

Permalänk: https://www.webforum.nu/p/2182020

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/178033-problem-med-slumpa-fram-olika-tal-frågor
