library(shiny)
ui <- fluidPage(
  titlePanel("ブラウザーで動くR：正規分布の実験"),
  sidebarLayout(
    sidebarPanel(
      sliderInput("n", "データの件数", min = 50, max = 2000, value = 500, step = 50),
      sliderInput("bins", "ヒストグラムの区切り数", min = 5, max = 60, value = 25),
      helpText("乱数の種を固定し、同じ条件では同じ結果にしています。")
    ),
    mainPanel(plotOutput("hist"), verbatimTextOutput("stats"))
  )
)
server <- function(input, output, session) {
  values <- reactive({ set.seed(123); rnorm(input$n) })
  output$hist <- renderPlot({
    hist(values(), breaks = seq(-5, 5, length.out = input$bins + 1),
         col = "#2583a5", border = "white", main = "標準正規分布から生成したデータ",
         xlab = "値", ylab = "度数", xlim = c(-4, 4))
  })
  output$stats <- renderText({
    sprintf("件数: %d\n平均: %.3f\n標準偏差: %.3f", length(values()), mean(values()), sd(values()))
  })
}
shinyApp(ui, server)
