Exercise1_1_31
来源:互联网 发布:手机淘宝举报有用吗 编辑:程序博客网 时间:2024/05/19 14:56
package chapterone;import java.awt.Color;import java.util.Scanner;import com.algs4.stdlib.StdDraw;import com.algs4.stdlib.StdRandom;public class Exercise1_1_31 { public static void drawRandConn(int N, double p) { StdDraw.setCanvasSize(500, 500);// 设置画布大小,顺序不能和下面的语句交换。 StdDraw.setScale(-1.0, 1.0);// 设置x和y 轴的范围 StdDraw.setPenRadius(.015);// 设置画笔的大小 double[][] d = new double[N][2]; for (int i = 0; i < N; i++) {// 获取每一个点的坐标, 核心代码 d[i][0] = Math.cos(2 * Math.PI * i / N);// x坐标 d[i][1] = Math.sin(2 * Math.PI * i / N);// y坐标 /*** * 一个数的cos和sin值的范围为-1到1,这就决定了上面的x,y轴的范围。 * 又因为同一个数的sin的平方,和cos的平方相加的和为1, 所以,(x,y)肯定在以(0,0)为圆心,半径为1的圆上。 */ // 输出各点坐标 String xx = String.format("%.2f", 2 * Math.PI * i / N); String yy = String.format("%.2f", 2 * Math.PI * i / N); String x = String.format("%.2f", d[i][0]); String y = String.format("%.2f", d[i][1]); System.out.println(i + 1 + ": " + xx + ", " + yy + " " + x + ", " + y); /*** * 坐标输出结果如下: 1: 0.00, 0.00 1.00, 0.00 2: 0.42, 0.42 0.91, 0.41 3: * 0.84, 0.84 0.67, 0.74 4: 1.26, 1.26 0.31, 0.95 5: 1.68, 1.68 * -0.10, 0.99 6:2.09, 2.09 -0.50, 0.87 7: 2.51, 2.51 -0.81, 0.59 8: * 2.93, 2.93 -0.98, 0.21 9: 3.35, 3.35 -0.98, -0.21 10: 3.77, 3.77 * -0.81,-0.59 11: 4.19, 4.19 -0.50, -0.87 12: 4.61, 4.61 -0.10, * -0.99 13:5.03, 5.03 0.31, -0.95 14: 5.45, 5.45 0.67, -0.74 15: * 5.86, 5.86 0.91, -0.41 * * 由此可知代码d[i][0] = Math.cos(2 * Math.PI * i/N); * * 中除以N的用途:平分0~N之间的数。 */ StdDraw.point(d[i][0], d[i][1]);// 在指定的坐标处画一个点 } StdDraw.setPenRadius();// 画笔半径默认值为0.002 for (int i = 0; i < N - 1; i++) for (int j = i + 1; j < N; j++) if (StdRandom.bernoulli(p))// 概率判断 /*** * boolean bernoull(double p){ return uniform()<p; } * * double uniform(){ return random.nextDouble(); } */ StdDraw.line(d[i][0], d[i][1], d[j][0], d[j][1]); // 坐标判断 StdDraw.setPenRadius(0.05); StdDraw.setPenColor(Color.RED); StdDraw.point(-1, 0); StdDraw.setPenColor(Color.BLUE); StdDraw.point(1, 0); StdDraw.setPenColor(Color.green); StdDraw.point(0.91, 0.41); } public static void main(String[] args) { Scanner scan = new Scanner(System.in); // int N = scan.nextInt(); int N = 15; // double p = scan.nextDouble(); double p = 1; p = Math.max(0, Math.min(1, p));// 值得学习的写法 drawRandConn(N, p); scan.close(); }}
0 0
- Exercise1_1_31
- 最大不相交区间求法分析(结合一道例题)
- WEB实现Excel下载的一种方式--JAVA EXCEL
- RadioButton设置Margin间距
- 实现对UIAlertController和UIAlertView判断系统后的简单封装
- 【集合】NSIndexSet
- Exercise1_1_31
- JavaMelody初使用
- Git的使用(三)
- matlab 通用神经网络代码
- Android模拟内存紧张,应用被杀死如何模拟应用程序被杀掉? 更新:Daniel Lew指出,最简单的方法是在DDMS中点击”Stop Porcess”杀掉你的程序,在你调试程序的时候可以这样做。
- 好网站收集
- Android 模拟吹气实现吹风车效果
- js删除数组里的某个元素
- Android Recovery 升级整体架构和流程