source: esimerkit/2015k/live/live13/Satunnaiset/Satunnaiset.cs @ 1404

Revision 1087, 2.3 KB checked in by anlakane, 3 years ago (diff)
Line 
1using System;
2using System.Text;
3using System.Linq;
4using System.Collections.Generic;
5// using Jypeli;
6
7/// @author Antti-Jussi Lakanen
8/// @version 25.2.2015
9///
10/// <summary>
11/// Satunnaislukuja.
12/// </summary>
13public class Satunnaiset
14{
15    /// <summary>
16    /// Tehdään satunnainen taulukko
17    /// </summary>
18    public static void Main()
19    {
20        double[] luvut;
21
22        luvut = TeeSatunnaisetLuvut(30, 5, -1);
23
24        // C#:ssa on olemassa "named arguments" -ominaisuus
25        // (https://msdn.microsoft.com/en-us/library/dd264739.aspx)
26        // jonka avulla argumenttien vastinparametrit voidaan nimetä
27        // kutsussa. Alla esimerkki.
28        // Huomaa että maara, alaraja, ja ylaraja viittavat
29        // rivillä 42 määriteltyihin parametrien nimiin --
30        // ne eivät siis ole paikallisia muuttujia Main-pääohjelmassa.
31
32        luvut = TeeSatunnaisetLuvut(maara: 30, alaraja: 5, ylaraja: -1); 
33    }
34
35    /// <summary>
36    ///
37    /// </summary>
38    /// <param name="maara"></param>
39    /// <param name="alaraja"></param>
40    /// <param name="ylaraja"></param>
41    /// <returns></returns>
42    public static double[] TeeSatunnaisetLuvut(int maara, double alaraja, double ylaraja)
43    {
44        Random r = new Random();
45        double[] luvut = new double[maara];
46
47        for (int i = 0; i < maara; i++)
48        {
49            luvut[i] = Skaalaa(r.NextDouble(), alaraja, ylaraja);
50            // Jos olisi Jypeli käytössä:
51            // luvut[i] = RandomGen.NextDouble(alaraja, ylaraja);
52        }
53
54        return luvut;
55    }
56
57    /// <summary>
58    /// Palautetaan välillä [0,1] oleva luku skaalattuna välille [min,max]
59    /// </summary>
60    /// <param name="luku">skaalattava luku</param>
61    /// <param name="min">alueen alaraja</param>
62    /// <param name="max">alueen yläraja</param>
63    /// <returns>luku skaalattuna välille [min,max]</returns>
64    /// <example>
65    /// <pre name="test">
66    ///  Keskiluku.Skaalaa(0.2,-3,3) ~~~ -1.8;
67    ///  Keskiluku.Skaalaa(0.2,1,6) ~~~ 2.0;
68    ///  Keskiluku.Skaalaa(0.0,1,6) ~~~ 1.0;
69    ///  Keskiluku.Skaalaa(1.0,1,6) ~~~ 6.0;
70    /// </pre>
71    /// </example>
72    public static double Skaalaa(double luku, double min, double max)
73    {
74        return luku * (max - min) + min;
75    }
76}
Note: See TracBrowser for help on using the repository browser.