⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rantestdemo.java

📁 我学密码学时做的作业
💻 JAVA
字号:
package demo;

import javax.swing.JPanel;
import org.jfree.chart.*;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.*;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import java.awt.*;
import javax.swing.JPanel;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import ran.Random;

/**
 * <p>Title: 随机数序列测试主程序</p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2006</p>
 * <p>Company: </p>
 * @author maya
 * @version 1.0
 */
public class RanTestDemo extends ApplicationFrame
{
  /**
   * 构造函数
   * @param s String  标题
   */
  public RanTestDemo(String s)
    {
        super(s);
        setContentPane(createDemoPanel());
    }

    /**
    *  创建统图表
     * @param xydataset XYDataset  图表数据
     * @param title String  图表标题
     * @return JFreeChart   统计图JFreeChart类
     */
    private static JFreeChart createChart(XYDataset xydataset,String title)
    {
        JFreeChart jfreechart = ChartFactory.createXYLineChart(title, "X", "Y", xydataset, PlotOrientation.VERTICAL, true, true, false);
        return jfreechart;
    }

    /**
     * 生成随机序列游程统计的绘图数据
     * @param ran Random    随机序列类实例
     * @param title String  标题
     * @return XYDataset    返回XYDataset类图表数据
     */
    private static XYDataset createYCDataset(Random ran,String title)
    {
        XYSeries xyseries = new XYSeries(title);
        int[] y=ran.countYC();
        System.out.print("游程="+y.length);
        for(int i=0;i<10;i++){
          xyseries.add(i,y[i]);
          System.out.println("c["+i+"]="+y[i]);
        }
        return new XYSeriesCollection(xyseries);
    }

    /**
     * 生成随机序列的相关统计的绘图序列
     * @param ran Random     随机序列实例
     * @param title String   标题
     * @return XYDataset     返回XYDataset类图表数据
     */
    private static XYDataset createRnDataset(Random ran,String title)
   {
       XYSeries xyseries = new XYSeries(title);
       double[] y=ran.rt(400,1);
       for(int i=0;i<400;i++){
         xyseries.add(i,y[i]);
         System.out.println("r["+i+"]="+y[i]);

       }
       return new XYSeriesCollection(xyseries);
   }

   /**
    * 创建随机序列游程和相关统计图
    * @return JPanel
    */
   public static JPanel createDemoPanel()
    {
      JPanel jpanel = new JPanel(new GridLayout(2, 1));
      Random ran=new Random();   //创建随机类实例
      ran.setRndmSequence(200,"1111","2222");  //创建随机序列
      System.out.println("0比特的个数:"+ran.count0bits());  //打印零比特总数目
      //游程图
      JFreeChart jfreechart = createChart(createYCDataset(ran,"游程统计"),"游程");
      XYPlot xyplot = (XYPlot)jfreechart.getPlot();
      XYLineAndShapeRenderer xylineandshaperenderer = new XYLineAndShapeRenderer();
      xylineandshaperenderer.setSeriesShapesVisible(1, true);
      xyplot.setRenderer(xylineandshaperenderer);
      ChartPanel chartpanel = new ChartPanel(jfreechart);
      jpanel.add(chartpanel);
      //相关图
      JFreeChart jfreechart1= createChart(createRnDataset(ran,"相关曲线"),"相关");
      ChartPanel chartpane2 = new ChartPanel(jfreechart1);
      jpanel.add(chartpane2);
      return jpanel;
    }

    /**
     * 测试主函数入口
     * @param args String[]
     */
    public static void main(String args[])
    {
        RanTestDemo demo= new RanTestDemo("随机数测试");
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);

    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -