一个模拟系统。我要每行的数据不一样。using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Drawing;namespace Stock
{
    public partial class Test : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Bind();
            }
        }
        protected void Timer1_Tick(object sender, EventArgs e)
        {
            NewBind();        }
        public void Bind()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add(new DataColumn("StockID")); //股票编号
            dt.Columns.Add(new DataColumn("StockName"));//股票名称
            dt.Columns.Add(new DataColumn("Trend"));//走势
            dt.Columns.Add(new DataColumn("ClosingCost"));//成交价
            dt.Columns.Add(new DataColumn("UpsAndDowns"));//涨跌
            dt.Columns.Add(new DataColumn("Rose"));//涨幅
            dt.Columns.Add(new DataColumn("Turnover"));//成交金额
            dt.Columns.Add(new DataColumn("TradingValume"));//成交量
            dt.Columns.Add(new DataColumn("TaoCount"));//套牢次数
            DataRow dr1 = dt.NewRow();
            dr1["StockID"] = "000001";
            dr1["StockName"] = "蜀中制药";
            dr1["Trend"] = "→";
            dr1["ClosingCost"] = 1 + "元";
            dr1["UpsAndDowns"] = "平";
            dr1["Rose"] = 0 + "%";
            dr1["Turnover"] = 0 + "元";
            dr1["TradingValume"] = 0 + "股";
            dr1["TaoCount"] = 20;
            DataRow dr2 = dt.NewRow();
            dr2["StockID"] = "000002";
            dr2["StockName"] = "中国铝业";
            dr2["Trend"] = "→";
            dr2["ClosingCost"] = 1 + "元";
            dr2["UpsAndDowns"] = "平";
            dr2["Rose"] = 0 + "%";
            dr2["Turnover"] = "0元";
            dr2["TradingValume"] = "0股";
            dr2["TaoCount"] = 20;
            DataRow dr3 = dt.NewRow();
            dr3["StockID"] = "000003";
            dr3["StockName"] = "中国电力";
            dr3["Trend"] = "→";
            dr3["ClosingCost"] = 1 + "元";
            dr3["UpsAndDowns"] = "平";
            dr3["Rose"] = 0 + "%";
            dr3["Turnover"] = "0元";
            dr3["TradingValume"] = "0股";
            dr3["TaoCount"] = 20;
            DataRow dr4 = dt.NewRow();
            dr4["StockID"] = "000004";
            dr4["StockName"] = "国家能源";
            dr4["Trend"] = "→";
            dr4["ClosingCost"] = 1 + "元";
            dr4["UpsAndDowns"] = "平";
            dr4["Rose"] = 0 + "%";
            dr4["Turnover"] = "0元";
            dr4["TradingValume"] = "0股";
            dr4["TaoCount"] = 20;
            DataRow dr5 = dt.NewRow();
            dr5["StockID"] = "000005";
            dr5["StockName"] = "中国铁路";
            dr5["Trend"] = "→";
            dr5["ClosingCost"] = 1 + "元";
            dr5["UpsAndDowns"] = "平";
            dr5["Rose"] = 0 + "%";
            dr5["Turnover"] = "0元";
            dr5["TradingValume"] = "0股";
            dr5["TaoCount"] = 20;
            dt.Rows.Add(dr1);
            dt.Rows.Add(dr2);
            dt.Rows.Add(dr3);
            dt.Rows.Add(dr4);
            dt.Rows.Add(dr5);
            gv.DataSource = dt;
            gv.DataBind();
            gv2.DataSource = dt;
            gv2.DataBind();
            Session["dt"] = dt;
        }
        public void NewBind()
        {
            DataTable dt = Session["dt"] as DataTable;
            foreach (DataRow dr in dt.Rows)
            {
                Random rs = new Random();
                double zs = rs.NextDouble();
                Random rf = new Random();
                double zf = rf.Next(0, 1000);
                Random rc = new Random();
                int zc = rc.Next(0, 999999);
                string price = dr["ClosingCost"].ToString();
                price = price.Replace("元", "");
                double pr = Convert.ToDouble(price);
                int taoCount = Convert.ToInt32(dr["TaoCount"].ToString());
                string upanddown = dr["UpsAndDowns"].ToString();                if (upanddown != "套牢")
                {
                    if (zs < 0.33)
                    {
                        dr["Trend"] = "↑";
                        dr["ClosingCost"] = Math.Round(((zf / 10000) + 1) * pr, 3) + "元";
                        dr["UpsAndDowns"] = "涨";
                        dr["Rose"] = (zf / 100) + "%";
                        dr["Turnover"] = Math.Round(((zf / 10000) + 1) * pr, 3) * zc + "元";
                        dr["TradingValume"] = zc + "股";
                    }
                    else if (zs > 0.66)
                    {
                        dr["Trend"] = "↓";
                        dr["ClosingCost"] = Math.Round((1 - (zf / 10000)) * pr, 3) + "元";
                        dr["UpsAndDowns"] = "跌";
                        dr["Rose"] = -(zf / 100) + "%";
                        dr["Turnover"] = Math.Round((1 - (zf / 10000)) * pr, 3) * zc + "元";
                        dr["TradingValume"] = zc + "股";
                    }
                    else
                    {
                        dr["Trend"] = "→";
                        dr["ClosingCost"] = pr + "元";
                        dr["UpsAndDowns"] = "平";
                        dr["Rose"] = 0 + "%";
                        dr["Turnover"] = pr * zc + "元";
                        dr["TradingValume"] = zc + "股";
                    }
                    if (pr < 0.5)
                    {
                        dr["Trend"] = "";
                        dr["UpsAndDowns"] = "套牢";
                    }
                }
                else if (upanddown == "套牢")
                {
                    if (taoCount > 0)
                    {
                        taoCount--;
                        dr["Trend"] = "";
                        dr["ClosingCost"] = 1 + "元";
                        dr["UpsAndDowns"] = "套牢";
                        dr["Rose"] = 0 + "%";
                        dr["Turnover"] = 0 + "元";
                        dr["TradingValume"] = 0 + "股";
                        dr["TaoCount"] = taoCount;
                    }
                    else
                    {
                        dr["Trend"] = "";
                        dr["ClosingCost"] = 1 + "元";
                        dr["UpsAndDowns"] = "平";
                        dr["Rose"] = 0 + "%";
                        dr["Turnover"] = 0 + "元";
                        dr["TradingValume"] = 0 + "股";
                        dr["TaoCount"] = 20;
                    }
                }
            }
            gv.DataSource = dt;
            gv.DataBind();
            gv2.DataSource = dt;
            gv2.DataBind();
            for (int i = 0; i < gv.Rows.Count; i++)
            {
                if (dt.Rows[i][4].ToString().Equals("涨"))
                {
                    gv.Rows[i].ForeColor = Color.Green;
                }
                else if (dt.Rows[i][4].ToString().Equals("跌"))
                {
                    gv.Rows[i].ForeColor = Color.Red;
                }
                else if (dt.Rows[i][4].ToString().Equals("平"))
                {
                    gv.Rows[i].ForeColor = Color.Blue;
                }
                else
                {
                    gv.Rows[i].ForeColor = Color.Gray;
                }
            }
            for (int i = 0; i < gv2.Rows.Count; i++)
            {
                if (dt.Rows[i][4].ToString().Equals("涨"))
                {
                    gv2.Rows[i].ForeColor = Color.Green;
                    Label lbl = gv2.Rows[i].Cells[0].FindControl("lblAmount") as Label;
                    string wh = dt.Rows[i][5].ToString();
                    wh = wh.Replace("%", "");
                    lbl.Width = Convert.ToUInt16(Convert.ToDouble(wh) * 100);
                    lbl.BackColor = Color.Green;
                }
                else if (dt.Rows[i][4].ToString().Equals("跌"))
                {
                    gv2.Rows[i].ForeColor = Color.Red;
                    Label lbl = gv2.Rows[i].Cells[0].FindControl("lblAmount") as Label;
                    string wh = dt.Rows[i][5].ToString();
                    wh = wh.Replace("%", "");
                    wh = wh.Replace("-", "");
                    lbl.Width = Convert.ToUInt16(Convert.ToDouble(wh) * 100);
                    lbl.BackColor = Color.Red;
                }
                else if (dt.Rows[i][4].ToString().Equals("平"))
                {
                    gv2.Rows[i].ForeColor = Color.Blue;
                    Label lbl = gv2.Rows[i].Cells[0].FindControl("lblAmount") as Label;
                    string wh = dt.Rows[i][5].ToString();
                    wh = wh.Replace("%", "0.01");
                    lbl.Width = Convert.ToUInt16(Convert.ToDouble(wh) * 100);
                    lbl.BackColor = Color.Blue;
                }
                else
                {
                    gv2.Rows[i].ForeColor = Color.Gray;
                }
            }
            Session["dt"] = dt;
        }
    }
}

解决方案 »

  1.   


    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Test.aspx.cs" Inherits="Stock.Test" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title></title>
    </head>
    <body>
     <form id="form2" runat="server">
        <div>
            <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <div style="font-size: 12pt; width: 100%; text-align: center">
                        股票行情模拟系统</div>
                    <div style="font-size: 9pt; width: 100%; text-align: center">
                        <asp:GridView ID="gv" runat="server" AutoGenerateColumns="False" 
                            CellPadding="4" ForeColor="#333333" Width="100%" 
                            EnableModelValidation="True">
                            <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                            <Columns>
                                <asp:TemplateField HeaderText="股票编号">
                                    <ItemTemplate>
                                        <asp:Label ID="Label1" runat="server" Text='<%# Bind("StockID") %>'></asp:Label>
                                    </ItemTemplate>
                                    <EditItemTemplate>
                                        <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("StockID") %>'></asp:TextBox>
                                    </EditItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="股票名称">
                                    <ItemTemplate>
                                        <asp:Label ID="Label2" runat="server" Text='<%# Bind("StockName") %>'></asp:Label>
                                    </ItemTemplate>
                                    <EditItemTemplate>
                                        <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("StockName") %>'></asp:TextBox>
                                    </EditItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="走势">
                                    <ItemTemplate>
                                        <asp:Label ID="Label3" runat="server" Text='<%# Bind("Trend") %>'></asp:Label>
                                    </ItemTemplate>
                                    <EditItemTemplate>
                                        <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("Trend") %>'></asp:TextBox>
                                    </EditItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="成交价">
                                    <ItemTemplate>
                                        <asp:Label ID="Label4" runat="server" Text='<%# Bind("ClosingCost") %>'></asp:Label>
                                    </ItemTemplate>
                                    <EditItemTemplate>
                                        <asp:TextBox ID="TextBox4" runat="server" Text='<%# Bind("ClosingCost") %>'></asp:TextBox>
                                    </EditItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="涨跌">
                                    <ItemTemplate>
                                        <asp:Label ID="Label5" runat="server" Text='<%# Bind("UpsAndDowns") %>'></asp:Label>
                                    </ItemTemplate>
                                    <EditItemTemplate>
                                        <asp:TextBox ID="TextBox5" runat="server" Text='<%# Bind("UpsAndDowns") %>'></asp:TextBox>
                                    </EditItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="涨幅">
                                    <ItemTemplate>
                                        <asp:Label ID="Label6" runat="server" Text='<%# Bind("Rose") %>'></asp:Label>
                                    </ItemTemplate>
                                    <EditItemTemplate>
                                        <asp:TextBox ID="TextBox6" runat="server" Text='<%# Bind("Rose") %>'></asp:TextBox>
                                    </EditItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="成交金额">
                                    <ItemTemplate>
                                        <asp:Label ID="Label7" runat="server" Text='<%# Bind("Turnover") %>'></asp:Label>
                                    </ItemTemplate>
                                    <EditItemTemplate>
                                        <asp:TextBox ID="TextBox7" runat="server" Text='<%# Bind("Turnover") %>'></asp:TextBox>
                                    </EditItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="成交量">
                                    <ItemTemplate>
                                        <asp:Label ID="Label8" runat="server" Text='<%# Bind("TradingValume") %>'></asp:Label>
                                    </ItemTemplate>
                                    <EditItemTemplate>
                                        <asp:TextBox ID="TextBox8" runat="server" Text='<%# Bind("TradingValume") %>'></asp:TextBox>
                                    </EditItemTemplate>
                                </asp:TemplateField>
                            </Columns>
                            <RowStyle BackColor="#F7F6F3" Font-Size="9pt" ForeColor="#333333" 
                                Height="30px" />
                            <EditRowStyle BackColor="#999999" />
                            <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
                            <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
                            <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                            <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
                        </asp:GridView>
                    </div>
                    <br />
                    <asp:GridView ID="gv2" runat="server" AutoGenerateColumns="False" 
                        CellPadding="4" Font-Size="9pt" ForeColor="#333333" GridLines="Vertical" 
                        Width="100%">
                        <RowStyle BackColor="#EFF3FB" />
                        <Columns>
                            <asp:TemplateField HeaderText="涨幅">
                                <ItemTemplate>
                                    <table style="font-size: 9pt" width="100%">
                                        <tr>
                                            <td style="width: 10%">
                                                <asp:Label ID="lblStock" runat="server" Text='<%#Bind("StockName") %>'></asp:Label>
                                            </td>
                                            <td style="width: 85%">
                                                <asp:Label ID="lblAmount" runat="server" Text=" "></asp:Label>                                            
                                           </td>
                                            <td style="width: 10%">
                                                <asp:Label ID="lblRose" runat="server" Text='<%#Bind("Rose") %>'></asp:Label>
                                            </td>
                                        </tr>
                                    </table>
                                </ItemTemplate>
                            </asp:TemplateField>
                        </Columns>
                        <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                        <PagerStyle BackColor="#2461BF" ForeColor="White" Height="30px" 
                            HorizontalAlign="Center" />
                        <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
                        <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                        <EditRowStyle BackColor="#2461BF" />
                        <AlternatingRowStyle BackColor="White" />
                    </asp:GridView>
                </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="Timer1" />
                </Triggers>
            </asp:UpdatePanel>
            <span style="font-size: 9pt">&nbsp;&nbsp; </span>
            <asp:Timer ID="Timer1" runat="server" Interval="5000" OnTick="Timer1_Tick">
            </asp:Timer>
            &nbsp;
            <br />
            <span style="font-size: 9pt">试题说明 
            <br />
            <br />
            1、不允许使用数据库,所有数据必须在后台生成。<br />
            2、股票原始单价为1元,交易量在0-999999之间。<br />
            3、涨幅在正负10%,且涨幅可以累加。比如原始单价为1元,第一刷新时上涨10%,此时的单价为1.1,第二次刷新也上涨10%,则此时的单价为1.21。涨、平、跌的概率均为1/3<br />
            4、数据刷新时间为5秒。<br />
            5、涨幅栏的数据为单次的涨幅。<br />
            6、成交价低于0.5时,停止交易20次(即套牢),此行数据显示为灰色。20次交易后重新按原值(1.0)重新上市交易。<br />
            7、测试时间为5小时(13:00-18:00)<br />
            8、测试结果直接把源文件打包,发送给监考人。<br />
            9、分值分布,数据表60分,图形表20分,套牢功能20分。<br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            数据表:初始化成功无错误10分,走势与涨跌10分,涨幅20分,成交价10分,成交金额和成交量10分<br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 图形表:初始化成功10分,图形10分<br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 套牢:套牢功能实现15分,解套5分<br />
            <br />
            </span>
        </div>
        </form>
    </body>
    </html>
      

  2.   

    把Random rs = new Random();之类的new Random放到for循环外面,否则每次都一样
      

  3.   

    http://www.cnblogs.com/falla/archive/2010/01/29/1659399.html
    如果触发Randm函数间隔时间很短,就有可能造成产生一样的随机数
      

  4.   


    没有产生相同的随机数啊。
    我调试的时候 到这一步
    gv.DataSource = dt;
    gv.DataBind();
    dt里面的值都是不一样的。 页面显示却是一样了。
      

  5.   

           Random rs = new Random();
                    double zs = rs.NextDouble();
                    Random rf = new Random();
                    double zf = rf.Next(0, 1000);
                    Random rc = new Random();
                    int zc = rc.Next(0, 999999);你的代码这样写是不行的,
    你知不知道什么叫随机种子呀,首先,   new Random() 方法必须放在循环外
    其次,   你的这几个 new Random() 根本不需要那么多,只需要保留一个Random就可以了,由一个Random对象来产生随机数, 否则你这三个对象产生的对象值都是一样的, 不过是这些值,因为方法不一样,被限制,使得值看起来不一样.然后你不要急着辩解,先照着改完之后,试完再说.
      

  6.   


    调试的时候,不一样,是因为要判断是否命中断点或是执行语句之间,花的时间太多,导致时间种子不一样了,所以看到数据是不一样的,Random rs = new Random();
      Random rf = new Random();
      Random rc = new Random();这三个随机数对象,种子都是一样的(因为计算机处理这三条语句所需要的时间差,是Random对象不能识别的,时间差小到被认为是同一时刻,因此他们的种子是一样的),所以他们产生的随机值也是一样的, 这样的三个对象是完全没有意义的,你需要一个就可以了,
    以下这样的调用的话, 就不会重复了.Random rand= new Random();
    double rd = rand.NextDouble();
    double zf = rand.Next(0, 1000);
    int zc = rand.Next(0, 999999);
      

  7.   

    你是怎么改的? 是这样?public void NewBind()
    {
    DataTable dt = Session["dt"] as DataTable;
    Random random = new Random();
    foreach ( DataRow dr in dt.Rows )
    {
    double zs = random.NextDouble();
    double zf = random.Next( 0, 1000 );
    int zc = random.Next( 0, 999999 );
    ......