コード例 #1
0
        private void btnInitialize_Click(object sender, EventArgs e)
        {
            PList.Clear();
            Random rand       = new Random();
            int    dataLength = 1000; // number of data points
                                      // create 4 distributions with different means and std devs
            double meanx0   = 150;
            double meanx1   = 250;
            double meanx2   = 375;
            double meanx3   = 475;
            double meany0   = 175;
            double meany1   = 250;
            double meany2   = 350;
            double meany3   = 450;
            double stddevx0 = 240;
            double stddevx1 = 270;
            double stddevx2 = 220;
            double stddevx3 = 260;
            double stddevy0 = 250;
            double stddevy1 = 240;
            double stddevy2 = 280;
            double stddevy3 = 245;
            int    index    = 0;

            Parallel.For(0, (dataLength / 4), (i) =>
                         //for (int i = 0; i < dataLength / 4; i++)
            {
                Point pt    = new Point();
                double rnum = rand.NextDouble();
                if (rnum < 0.5)
                {
                    pt.X = (int)(rand.NextDouble() * stddevx0 / 2 + meanx0);
                }
                else
                {
                    pt.X = (int)(-1 * rand.NextDouble() * stddevx0 / 2 + meanx0);
                }
                if (rnum < 0.5)
                {
                    pt.Y = (int)(rand.NextDouble() * stddevy0 / 2 + meany0);
                }
                else
                {
                    pt.Y = (int)(-1 * rand.NextDouble() * stddevy0 / 2 + meany0);
                }
                index++;
                PList.Add(pt);
            });

            Parallel.For(0, (dataLength / 4), (i) =>
                         //for (int i = 0; i < dataLength / 4; i++)
            {
                Point pt    = new Point();
                double rnum = rand.NextDouble();
                if (rnum < 0.5)
                {
                    pt.X = (int)(rand.NextDouble() * stddevx1 / 2 + meanx1);
                }
                else
                {
                    pt.X = (int)(-1 * rand.NextDouble() * stddevx1 / 2 + meanx1);
                }
                if (rnum < 0.5)
                {
                    pt.Y = (int)(rand.NextDouble() * stddevy1 / 2 + meany1);
                }
                else
                {
                    pt.Y = (int)(-1 * rand.NextDouble() * stddevy1 / 2 + meany1);
                }
                index++;
                PList.Add(pt);
            });

            Parallel.For(0, (dataLength / 4), (i) =>
                         //for (int i = 0; i < dataLength / 4; i++)
            {
                double rnum = rand.NextDouble();
                Point pt    = new Point();
                if (rnum < 0.5)
                {
                    pt.X = (int)(rand.NextDouble() * stddevx2 / 2 + meanx2);
                }
                else
                {
                    pt.X = (int)(-1 * rand.NextDouble() * stddevx2 / 2 + meanx2);
                }
                if (rnum < 0.5)
                {
                    pt.Y = (int)(rand.NextDouble() * stddevy2 / 2 + meany2);
                }
                else
                {
                    pt.Y = (int)(-1 * rand.NextDouble() * stddevy2 / 2 + meany2);
                }
                PList.Add(pt);
                index++;
            });

            Parallel.For(0, (dataLength / 4), (i) =>
                         //for (int i = 0; i < dataLength / 4; i++)
            {
                double rnum = rand.NextDouble();
                Point pt    = new Point();
                if (rnum < 0.5)
                {
                    pt.X = (int)(rand.NextDouble() * stddevx3 / 2 + meanx3);
                }
                else
                {
                    pt.X = (int)(-1 * rand.NextDouble() * stddevx3 / 2 + meanx3);
                }
                if (rnum < 0.5)
                {
                    pt.Y = (int)(rand.NextDouble() * stddevy3 / 2 + meany3);
                }
                else
                {
                    pt.Y = (int)(-1 * rand.NextDouble() * stddevy3 / 2 + meany3);
                }
                index++;
                PList.Add(pt);
            });

            Visualization.DrawPoints(pic1, PList, 0.7);
            MessageBox.Show("Data initialized for " + PList.Count + " points");
        }